您好,欢迎来到二三四教育网。
搜索
您的当前位置:首页Shiro15-坑

Shiro15-坑

来源:二三四教育网

哎, 由于刚毕业想做一个项目, 用到了 Shiro 来做权限管理, 可是万万没想到刚开始做就出了问题, 原因是因为登录的时候使用 ajax 进行请求的.

登录成功后却一直无法进行页面跳转如下图:


可以看到 我们将数据提交到login.do 登录成功了后会重定向到index.jsp 页面, 但是浏览器却还是停留在 登录界面.这点让我感觉操蛋!!!

但是我们看请求发现:


返回一个302错误, 额 我们不管这个状态码是啥, 我们说说怎么处理.

首先我们确定这个请求是 ajax 的, 而且之间的数据传递是 json , 那么我们也需要返回 json 是不是才算完成了一个完整的请求/响应.我们添加如下代码

public class CustomFormAuthenticationFilter extends FormAuthenticationFilter {
    @Override
    protected boolean onLoginSuccess(AuthenticationToken token, Subject subject, ServletRequest request, ServletResponse response) throws Exception {
        HttpServletRequest httpServletRequest = WebUtils.toHttp(request);
        HttpServletResponse httpServletResponse = WebUtils.toHttp(response);

        if (!"XMLHttpRequest".equalsIgnoreCase(httpServletRequest.getHeader("X-Requested-With"))) {// 不是ajax请求
            return super.onLoginSuccess(token, subject, request, response);
        } else {
            httpServletResponse.setCharacterEncoding("UTF-8");
            PrintWriter out = httpServletResponse.getWriter();
            out.println("{\"resultInfo\":\"s\"}");
            out.flush();
            out.close();
        }
        return false;
    }
}

Copyright © 2019- how234.cn 版权所有 赣ICP备2023008801号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务