SpringSecurity session超期后返回前端401错误码

本文介绍了如何在SpringSecurity中,当session超期时,使后端接口返回401未认证错误给前端。通过自定义RequestMatcher识别Ajax请求,并实现特定的AuthenticationEntryPoint来返回401状态码,从而实现前端根据401错误跳转到登录页面。
摘要由CSDN通过智能技术生成

想要实现的场景:前后端分离项目,后端session过期后,访问接口返回401 unauthentication错误给前端,前端对401错误进行跳转处理,跳转至登录页。

由于session过期,需要验证的请求(不论是不是Ajax请求)会返回302重定向,因此我们先配置Spring Security使之能对ajax请求返回401错误

1、实现自定义的RequestMatcher,匹配Ajax请求(angular默认不会带上X-Requested-With,这里通过Accept进行判断,也可以在前端对ajax请求添加X-Requested-With头)

public class AjaxRequestMatcher implements RequestMatcher {

    /**
     * 匹配Ajax请求
     * @param request
     * @return
     */
    @Override
    public boolean matches(HttpServletRequest request) {
        return "XMLHttpRequest".equals(request.getHeader("X-Requested-With")) ||
                request.getHeader("Accept") != null &&
                        request.getHeader("Accept").contains("application/json");
    }
}

2、实现自定义的AuthenticationE

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值