JAXSON 業務アプリケーションフレームワーク
トップ

インストール

ドキュメント
チュートリアル
開発ガイド
トランザクション管理
データベース接続
データベースアクセス
バリデーション
セキュリティ
エクセルファイル出力
JavaScriptリファレンス
API doc

ダウンロード
jaxson-2.1.zip

セキュリティ

ページ毎またはアクション毎に必要な権限を設定することができます。

セキュリティ設定
権限ロールを設定している画面、アクションにアクセスする時、 その要求されるロールがないか確認できない場合は強制的にログイン画面に遷移します。 ログイン画面は WEB-INF/application-settings.xml で指定します。
<parameter>
    <param-name>login</param-name>
    <param-value>/aplication-path/login.html</param-value>
</parameter> 
アクションによってはログイン画面に遷移できない場合がありますが、 その場合は例外がスローされて JavaScriptの errorHandler() 関数に処理が渡されます。

アクションのロール設定は WEB-INF/action-mappings.xml で行います。
<action-package>
    <package-name>action.packcage</package-name>
    <action-role>role1,role2</action-role>
</action-package>
            
<action>
    <action-name>ActionName</action-name>
    <action-class>action.package.XXXAction</action-class>
    <action-role>role1,role2</action-role>
</action> 
上記例のようにパッケージとアクションクラスのどちらの設定も可能で、 またパッケージの設定よりアクションクラスの設定が優先されます。

画面毎の設定は WEB-INF/security-settings.xml で行います。
<path-role>
    <url-pattern>/folder/*.html</url-pattern>
    <roles>role1,role2</roles>
</path-role> 
url-pattern に一致する画面をロードする際に権限チェックを行います。
複数のロールを設定する場合は例のようにカンマで区切ってください。


権限チェックを行う
権限ロールを設定したアクション、画面にアクセスする前に ログイン画面などで権限をセッションに登録しておきます。
ユーザロールは "user-roles" というキー名でセッションに格納しておきます。 このキー名は ActionPermission.USER_ROLES に定義してありますので それを使用します。
public class LoginAction extends ServiceAction {
    public void execute() throws Exception {
        List userRoles;
        ...
        request.getSession().setAttribute(ActionPermission.USER_ROLES, userRoles);
        ...
    }
} 
セッションに格納するユーザ権限は String、Objectの配列、Iterableインタフェースの実装クラス のいずれかオブジェクトである必要があります。 String型で複数のロールを指定するには各ロールをカンマで区切ります。
そのアクション、画面が要求する各ロールそれぞれについて、 equalsでtrueとなる要素がユーザ権限に含まれている場合にアクセスが許可されます。


ログイン画面
アクセスが許可されないときは設定したログイン画面に遷移し JavaScriptの doActionError を実行します。 doActionError関数を定義していない場合は デフォルトで警告メッセージを表示します。
doActionErrorの引数として渡されるオブジェクトには 以下の情報が格納されています。 上記の情報は document.initialdata にも格納されますので、 ログイン後の遷移先などに利用してください。