【问题标题】:Issue with @Before and POST request@Before 和 POST 请求的问题
【发布时间】:2018-01-31 10:28:32
【问题描述】:

我正在尝试按照文档中的示例使用拦截来实现简单的安全性:

@Before(除了= {“注册”,“登录”}) public void checkAuthentication(H.Session session) { if (null != session && session.get("username") == null) { 重定向(“登录”); } } @GetAction("/登录") 公共结果登录(){ 返回渲染(“登录”); } @PostAction("/登录") 公共无效doLogin(字符串用户名,字符串密码,H.Session会话){ // 做一些登录工作 + 注册会话变量 }

拦截器工作正常(当我尝试打开所列页面之外的任何其他页面时,它会将我重定向到登录表单)。但是,它不适用于 POST,例如当我尝试提交登录表单时,doLogin() 永远不会被调用,我会被发送回登录屏幕(注册表的行为相同)。

更改语法以仅包含要拦截的页面,登录按预期工作:

@Before(仅 = "家")

但是这有点不方便,因为我有大约四个页面不需要拦截,还有更多需要拦截。

此方法不适用于 POST 请求还是我做错了什么?

【问题讨论】:

    标签: actframework


    【解决方案1】:

    您好,请将"doLogin" 添加到您的@Before 注释中:

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

    【讨论】:

      猜你喜欢
      • 2018-09-02
      • 2021-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多