LightSwitch : アクセス制御の実装方法

業務アプリケーションをさくっと作れる LightSwitch なので、ロールによるアクセス制御についての機能を持っています。

弱点としては 認証とアクセス制御とが独立していること。フォーム認証であれば、運用時のアカウント管理は必要になるものの、個人的見解ではまあ許容範囲。Windows 認証だと認証とアクセス権とが独立しているのはあまりうれしくないので、例えば CodePlex の LightSwitch Active Directory Sample を参考にして、もうちょっと考えてみないといけないなと思ってます。(その辺は長い目で見てやってください)

文句ばっかり垂れててもしょうがないので、画面キャプチャとともにアクセス制御の実装方法を見ていきます。
デバッグ方法、運用時の挙動は別の投稿で。


画面のアクセス制御、つまりユーザーのアクセス権に応じて画面を見せる/見せないを制御するには、

<画面>_CanRunUser.HasPermission を呼び出します。

SNAGHTML8a3803

HasPermission には引数として “アクセス権を表す文字列” を渡します。カレントユーザーが該当するアクセス権を持っていれば true、権限がなければ false を返してくれます。

ではアクセス権を表す文字列はどこでどうやって定義するかというと、プロジェクトのプロパティの [アクセス制御] で定義します。ここの [名前] 列が HasPermission に渡すロール名です。

image

 


具体的な例で見てみます。
例として使うのはこんなアプリケーション。アクセス制御のところにフォーカスしたいので、アプリケーションとしてはシンプル(というよりヘボい)です。

テーブルはこんな感じ。

image 

テーブル名、列名が日本語なのは気分の問題です、深い意味はありません。複数形の名前を「社員名簿」にしたのも、ユーザー視点でちょっと面白いんじゃない?というレベル。

社員名簿編集画面。イメージとしては総務部あたりが社員名簿をメンテナンスするのに使う画面。

image

全社員が参照する、社員名簿閲覧画面。アクセス制御の確認としては意味はないんですが、「閲覧画面」を意識して読み取り専用コントロールにしてみました。
※これをチェックすると、下位のコントロールではテキストボックスだった各コントロールが自動的にラベルに変更されます。

image

アクセス制御とは関係ありませんが、せっかくなので画面ナビゲーションもちょっと触っておきます。
[画面ナビゲーション] で “総務部” 用のメニュー項目を作ります。それから全社員がアプリケーションを起動した時に開く画面を “社員名簿閲覧画面” にしておきます。

image

 


一般社員には “編集画面” は見せるわけにはいきません。そこで、この編集画面に対してアクセス制御を行います。

まずは認証の方法と、アプリケーション固有のアクセス権を指定します。

  1. アプリケーションのプロパティで [アクセス制御] を開きます。
  2. 今回は [フォーム認証] を選択します。
    ※Windows 認証は上述の通り、認証とアクセス権とが別でわかりにくいことと、スタンドアロンの PC でも LightSwitch の勉強が進めやすいように、まずはフォーム認証でやってみます。
  3. アクセス権種類を必要な分だけ定義します。ここでプログラミング的に大事なのは [名前] 列です。ここに制御で利用する権限の名前を書いていきます。
    ※「では、[表示名] は何の意味があるか?」というと、サーバーにデプロイした後、運用時に使います。 
    image

 

  1. デザイナー画面で “社員名簿編集” 画面を開きます。
  2. 画面の [コードの記述] から [社員名簿編集_CanRun] を選択します。文字通り、社員名簿編集画面を起動していいかどうかを指定するメソッドです。 
    image
  3. どういう条件(=アクセス権)ならば、社員名簿編集画面を見せてもいいかを指定します。 
    SNAGHTML867a30 

デバッグ時にどうやってアクセス権ごとの動作を確認するのか、デプロイ後はどうやってユーザーアカウントやロールを登録していくのかは、別の機会にして、実際の動作結果を先に載せておきます。

プロパティ画面で定義した “名簿編集権限” を持っている場合には、こんな感じ。総務部用のメニューが表示されて、社員名簿の編集もできます。

image

一方、“名簿編集権限” を持っていない場合は、総務部用メニューは表示されず、社員名簿は閲覧のみです。

image

 

このようにしてアクセス権の有無で画面表示を変えることができます。

 

※アクセス権(パーミッション)とロールとの混同があったので用語の使い方を修正して、サンプルの画面キャプチャを変更しました。

広告
カテゴリー: LightSwitch タグ: パーマリンク

LightSwitch : アクセス制御の実装方法 への2件のフィードバック

  1. ピンバック: LightSwitch : アクセス制御のデバッグ方法 « 技術との戯れ

  2. ピンバック: LightSwitch : アクセス制御の運用時設定方法 « 技術との戯れ

コメントを残す

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

WordPress.com ロゴ

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

Twitter 画像

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

Facebook の写真

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

Google+ フォト

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

%s と連携中