ホーム > LightSwitch, Silverlight > LightSwitchの裏側を探る:ユーザー認証とアクセス許可

LightSwitchの裏側を探る:ユーザー認証とアクセス許可

前の記事で動作を確認したユーザー認証とアクセス許可の裏側をのぞいてみます。

まずユーザー認証に使われるデータベースですが、これはASP.NETに組み込まれているユーザー認証の仕組みをそっくり使っているようです。
テーブル/ビュー/ストアドプロシージャ等見慣れたものが並んでいます。
また、ServerGeneratedフォルダにあるWeb.configを見ると、メンバーシップ/ロール/プロファイルを利用するための設定が記述されており、これもASP.NETそのものです。
プロファイルとしてFullNameというプロパティが設定されていますが、これがユーザー登録画面で「氏名」として使われているようです。

パーミッションについては、ApplicationDefinition.lsmlに以下のように設定されています。

<Permission Name="一般">
    <Permission.Attributes>
        <DisplayName Value="一般" />
    </Permission.Attributes>
</Permission>
<Permission Name="管理者">
    <Permission.Attributes>
        <DisplayName Value="管理者" />
    </Permission.Attributes>
</Permission>

やはりLightSwitchのキモとなるのはApplicationDefinition.lsmlファイルのようですね。

それからログイン画面、ユーザー画面、役割画面ですが。。。

ログイン画面については情報が見つけられていません。

ユーザ画面、役割画面についてはMicrosoft.LightSwitch.Client.dll の中に
・Microsoft.LightSwitch.Security.Client.Implementation.UsersScreen
・Microsoft.LightSwitch.Security.Client.Implementation.RolesScreen
というクラスが存在しています。
多分このクラスがそれぞれの画面なのではないかと思われます。

なお、前の記事では言及していませんが、アプリケーションのプロパティでScreen NavigationをみるとUsers、Rolesという画面があらかじめ用意されていることがわかります。

 image

Access ControlにはあらかじめSecurityAdministrationというパーミッションが用意されているので、このパーミッションを付加してデバッグを実行するとユーザー画面や役割画面を見ることができます。

image_3

ただし、ここでユーザーや役割を登録してみたところで開発中は必ず「testuser」になってしまうため、意味はなさそうです。

少し触ってみて不満に思うことは、この作り付けのユーザー画面に拡張性がなさそうな部分です。
例えばログインしているユーザのメールアドレスを保持しておいて、なにか処理したときに確認メールを送信したい、といった機能は容易に想像されるのですが、これを実装するためにログインユーザーとメールアドレスを簡単に関連づけするための方法が見つけられていません。
どうもログインユーザーを保持しているテーブルに直接アクセスする方法もなさそうですし。
ログイン画面に対しても何も手を入れることができないようなので、独自に用意したテーブルを使ってユーザー認証を行う、というのもできなさそうなんですよねぇ。。。

今のLightSwitchの実装だとユーザー認証のための情報は本当にログインするためだけにしか使えないようになっていると考えています。
もうちょっと柔軟にいろいろ使えるようになるといいんですけどねぇ。
まぁ、現在の実装ではユーザ情報を修正することさえできない(フォーラムで次のバージョンで実装予定という記述があったような)状態なので、今後良い方向に発展してくれることを期待したいと思います。

カテゴリー:LightSwitch, Silverlight
  1. まだコメントはありません。
  1. No trackbacks yet.

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。