0

问题 - 在我的应用程序中,我有两个不同的模块 1 - 前端视图 2 - 后端管理视图。这两个模块有两种不同的登录表单。并且两个模块的用户身份验证过程也不同。现在在 Secure.java 中,如果用户未通过身份验证,则只有一个操作/方法“login()”来呈现登录页面。那么如果用户未通过身份验证,我应该如何管理各个模块的登录页面的呈现。我可以通过自定义 Secure.java 类和 Secure 模块的路由文件来管理它。但这是一个正确的方法来做到这一点。我还有一个查询重新分级“检查”方法。根据文档,我们需要重写 Security 类中的 check 方法(从 Secure. 安全性)以检查用户的个人资料。我也做了同样的事情,即在 Admin 控制器中添加了检查注释 @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() 页面时,永远不会调用检查。所以在这里我需要你在两个不同的问题上的帮助。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 回答