shiro 重定向携带 JSESSIONID 问题解决

shiro 请求头携带错误的 token 的问题
摘要由CSDN通过智能技术生成

问题描述:

环境

Springboot + shiro

前情

shiro 配置好后,登录成功后会生成 auth_token 保存并返回给前端 ,客户端往后每次发送请求都携带 auth_token 在请求头中,以此来判断登录状态。当请求不携带 auth_token 时判断为没登录,会跳转至提醒用户登录的接口(假设为 “/unauthorized”)。

问题发生过程

当发送请求时,携带一个错误的 auth_token 请求头,此时不会跳转,后台会出现 ”shiro Enabling session validation scheduler…“ 的问题。

问题排查

经过排查发现,下面是我自己写的 SessionManager ,用来判断请求是否携带了 “auth_token” 这个 token信息 ,如果携带了则把该 auth_token 返回交给 shiro 底层判断跟之前登录保存的 auth_token 是否一致,不一致则跳转到 “/unauthorized” 接口。

public class CustomWebSessionManager extends DefaultWebSessionManager {
   
    public static final String AUTH_HEAD_TOKEN = "auth_token";

    @Override
    protected Serializable getSessionId(ServletRequest request, ServletResponse response) {
   
        if (request instanceof HttpServletRequest) {
   
            HttpServletRequest req = (HttpServletRequest) request;
            System.out.println(req.getRequestURL());
            String sessionId = req.getHeader(AUTH_HEAD_TOKEN);
            if (!StringUtils.isEmpty(sessionId)) {
   
                return sessionId;
            }
        }
        return super.getSessionId(request, response);
    }
}

问题就出现在这里,我输入了错误的 auth_tok

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值