@Before和POST请求问题

时间:2018-01-31 10:28:33

标签: actframework

我尝试使用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请求,还是我做错了什么?

1 个答案:

答案 0 :(得分:0)

您好,请在您的"doLogin"批注中添加@Before

@Before(except= {"register", "login", "doLogin"})
public void checkAuthentication(H.Session session) {
    if (null != session && session.get("username") == null) {
        redirect("login");
    }
}