[Seasar-user:18188] Re: URL直接入力(直リンク)の制御について

[E-MAIL ADDRESS DELETED] [E-MAIL ADDRESS DELETED]
2009年 8月 4日 (火) 10:32:56 JST


伊藤さん、こんにちは。

鈴木 秀和と申します。

小林さんもおっしゃっているように具体的にどうなさりたいかわかりませんが
うちのプロジェクトでは
よくありがちな

  ログインしたユーザーの権限毎に
  入力 or 遷移 できる画面を制御させる
  (e.g. 一般ユーザーは、マスタメンテ関連画面には入れない等)

という機能を以下のような感じでやってます。

まずDBなどに、ユーザー権限毎のアクセス禁止ページ(url)の情報を登録して
おいて
次にインターセプタにて

  public Object invoke(MethodInvocation methodInvocation) throws 
Throwable {

    //URLを取得
    String url = httpServletRequest.getRequestURL();
    // ログインしていなければ
    if (authenticationDto.AuthenticationStatus == null) {
      // ログイン画面へ
    }
    // ログイン済なら
    else {
      // アクセス権限があるかを判断
      if (!pageAuthorityService.isAllowPageAccess(url)) {
        // 権限がないときは、あんたは権限ないよエラー画面へ
        return NoAuthorityPage.class;
      }
    }
    //各画面へ遷移
    return methodInvocation.proceed();
  }

として

アクセス権限チェックメソッド(上記の例だと isAllowPageAccess(url))にて
引数のurlと登録のアクセス禁止ページをマッチングさせて
マッチしたらfalseを返す

としています。

こうしておけば URL直接入力されてもインターセプタでチェックが掛かりま
す。
ただしすべてのurlに対応するPageクラスがあり、そこにinitialize()なり
prerender()なりが
必ずあるという前提ですが。

# とここまで書いてたら、先に松山さんが回答してました... (^^;)
# 処理的には多分、同じだと思います。

参考になれば幸いです。

ではでは。


鈴木 秀和


>From: Yusuke Ito <[E-MAIL ADDRESS DELETED]>
>To: [E-MAIL ADDRESS DELETED]
>Date: Mon Aug 03 18:09:06 JST 2009
>Subject: [Seasar-user:18175]
	URL直接入力(直リンク)
	の制御について
>
>お世話になります。
>伊藤と申します。
>
>teeda 1.0.13-sp6を使用しています。
>
>質問ですが、Teeda(Seasar2)の機能で
>URL直接入力(直リンク)を制御できるような機能は
>ありますでしょうか?
>
>大雑把な質問で申し訳ありませんが、宜しくお願い致します。
>




Seasar-user メーリングリストの案内