我尝试使用Interception按照文档中的示例实现简单安全性:
@Before(except= {"register", "login"}) public void checkAuthentication(H.Session session) { if (null != session && session.get("username") == null) { redirect("login"); } } @GetAction("/login") public Result login() { return render("login"); } @PostAction("/login") public void doLogin(String username, String password, H.Session session) { // do some login stuff + register session variables }
拦截器工作正常(当我尝试打开除列出的页面之外的任何其他页面时,它会将我重定向到登录表单)。但是,它不适用于POST,例如当我尝试提交登录表单时,doLogin()永远不会被调用,我将被发送回登录屏幕(注册表单的行为相同)。
更改语法以仅包括要截取的页面,登录按预期工作:
@Before(only = "home")
然而,这有点不方便,因为我有大约四页不需要拦截而且还有很多其他页面。
这种方法不能用于POST请求,还是我做错了什么?
答案 0 :(得分:0)
您好,请在您的"doLogin"
批注中添加@Before
:
@Before(except= {"register", "login", "doLogin"})
public void checkAuthentication(H.Session session) {
if (null != session && session.get("username") == null) {
redirect("login");
}
}