0

問題 - 私のアプリケーションには、2 つの異なるモジュールがあります。1 - フロントエンド ビュー 2 - バックエンド管理ビュー。両方のモジュールに 2 つの異なるログイン フォームがあります。また、ユーザーを認証するための認証プロセスも、両方のモジュールで異なります。現在、Secure.java には、ユーザーが認証されていない場合にログイン ページを表示するアクション/メソッド「login()」が 1 つだけあります。次に、ユーザーが認証されていない場合、それぞれのモジュールのログイン ページのレンダリングをどのように管理する必要がありますか。Secure.java クラスと Secure モジュールのルート ファイルをカスタマイズすることで、これを管理できます。しかし、それを行う正しい方法はありますか。「check」メソッドを再評価するクエリがもう 1 つあります。ドキュメントによると、Security クラスの check メソッドをオーバーライドする必要があります (これは Secure. セキュリティ) ユーザーのプロファイルを確認するため。私は同じことをしました。つまり、管理コントローラーにチェック注釈 @Check("admin") を追加し、Security クラスのメソッドをオーバーライドしました。ただし、check メソッド (オーバーライドされたメソッド) は呼び出されません。どうしてこうなの??ここで何か間違っていますか??

これが Admin クラスの構造です...

@With(Secure.class)
@Check("admin")
public class Admin extends JapidContorller {

  /**
  * An action to render the index page of the Back end admin module.
  */
  public static void index(){
     renderJapid();
  }

  /**
   * An action to render the login page of the Back end admin module.
   */
   public static void adminLogin() {
      renderJapid();
  }

  /**
   * An method to log out the logged in user.
   */
   public static void adminLogout(){
      renderJapid();
   }

}

そしてセキュリティクラスで

public class Security extends Secure.Security {
    public static boolean authenticate(String username, String password){
      -----------------
      -----------------
    }

    public static boolean check(String profile){
       System.out.println("[Security]  The check from security is called");
       return true;
    }
}

しかし、ここでは、Admin.index() ページを要求したときにチェックが呼び出されることはありません。ここで、2 つの異なる問題についてあなたの助けが必要です。1 ) アプリケーションに複数のログイン ページがある場合、セキュア モジュールを使用してユーザーの認証をどのように処理する必要がありますか。2) オーバーライドされたチェック メソッドは呼び出されません。

ここで私を助けてください。本当に緊急です。

4

1 に答える 1

0

Deadbolt を使用して承認を追加し、DeadboltHandler#onAccessFailure が呼び出された場合に、必要なログイン ページにディスパッチできます。これを行う方法については、integration-with-secure サンプル アプリケーションを参照してください。

https://github.com/schaloner/deadbolt/tree/master/samples-and-tests/integration-with-secure

于 2012-06-04T11:40:27.623 に答える