Before  Home  Next 


 ログイン機能(後編)



1) はじめに

ログイン機能(前編)では、権限情報とユーザの登録手順を解説してきました。
ここではチュートリアルで作成したメッセージ管理機能に権限を与えてみましょう。


2) セキュリティポリシー

Weberフレームワークによるユーザ認証は、アクション単位で行われます。
ユーザ認証が必要なアクションに対して、権限を付与することにより、 その権限をもつユーザにのみ、そのアクションを実行する権利が与えられます。

まずは、メッセージ管理機能に付与する権限から検討していきましょう。
今回のメッセージ管理機能のセキュリティポリシーを以下のようにしたいと思います。

セキュリティポリシー 利用可能なサービス 権限付与の対象となるアクションクラス
guest/adminユーザが利用できるサービス メッセージ登録、編集、照会 MessageBaseAction( MessageDisplayRegistAction, MessageDisplayUpdateAction, MessageRegistAction, MessageUpdateAction, MessageSearchAction )
adminユーザのみが利用できるサービス メッセージ削除 MessageDeleteAction


まず、今回のセキュリティポリシーの基本概念として、guest権限以上のユーザでないと メッセージ管理機能が利用できないこととします。
ただし、登録済みのメッセージを削除できるのはadmin権限をもつユーザのみとします。
権限の付与はこの後で説明しますが、各アクションクラスで設定します。

今回のように、ほとんどのアクションで共通の処理を行いたい場合、各モジュールのスーパークラス である"モジュール名"+BaseActionクラスに処理を記述します。

今回は、MessageBaseActionクラスに"guest"権限と"admin"権限を設定し、 MessageDeleteActionクラスには"admin権限"のみを設定します。


3) 権限の設定

まずはMessageBaseActionの設定からはじめましょう。
必要な作業は、以下のメソッドを1つ追加するだけです。

MessageBaseActionクラスに権限を設定する

    /**
     * このアクションに必要な権限を登録します
     */
    public void doInit(ActionBucket bucket){
        addRole("guest");
        addRole("admin");
    }

doInit(ActionBucket bucket)メソッドは、ユーザ認証処理直前に呼ばれるメソッドで、この中に addRoleメソッドを使って、権限を設定します。
ここで与えられた権限をもつユーザにのみ、このアクションを実行する権限が 与えられることになります。
逆に権限を何も指定しなければ、ユーザ認証は行われず、全てのユーザがこの アクションを実行することができてしまいます。

次にMessageDeleteActionに権限を設定してみましょう。
必要な作業は、MessageBaseActionのときと同じです。

MessageDeleteActionクラスに権限を設定する

    /**
     * このアクションに必要な権限を登録します
     */
    public void doInit(ActionBucket bucket){
        addRole("admin");
    }

次にMessageDeleteActionはadmin権限を持つユーザだけが実行することができます。
MessageBaseActionのdoInitメソッドをオーバーライドしているため、 guest権限のユーザは、このアクションを実行することはできません。

では、実際にソースをコンパイル、デプロイして、動作を確認してみましょう。

まず、ログインしていない状態で、INDEXページから"メッセージ登録" を選択してみてください。
ログインしていない場合、何も権限が与えられていないため、以下のメッセージが 出力され、メッセージ登録画面に遷移できません。



次にguest権限をもつユーザにログインして、再度"メッセージ登録"を選択してみて ください。
こんどは、ちゃんとメッセージ登録画面が表示され、メッセージ登録まで行うことが できるはずです。



又、メッセージ登録画面の左ペインに現在ログイン中のユーザが表示されていることを 確認してください。
guestユーザは、メッセージの登録、更新、照会は利用できますが、メッセージを削除 することができません。
メッセージを削除するためには"admin"権限を持つユーザにログインする必要があります。

以上前編、後編にわたってユーザの登録、ユーザ認証の設定について解説してきました。
いかがです?WeberCreator+Weberを使うと、意外と簡単に実現できることが 実感されたのではないでしょうか?


Before  Home  Next