springsecurity记住我登录时访问无权限接口,跳转登录界面

贴一下springsecurity无权限时异常处理的逻辑

  1. 未登录状态:如果用户尝试访问需要认证的资源但未登录,即未经过认证,在这种情况下应该跳转到登录页面或者返回登录提示,让用户进行身份验证。通过调用 AuthenticationEntryPoint 可以统一处理未登录状态下的跳转逻辑,确保用户体验一致性。

  2. 记住我状态:用户可能选择了"记住我"功能,在记住我状态下,用户的会话仍然有效,但并没有进行实际的身份验证。如果用户在记住我状态下访问需要认证的资源,也应该跳转到登录页面进行实际的身份验证,而不是直接拒绝访问。通过调用 AuthenticationEntryPoint 可以统一处理记住我状态下的跳转逻辑,提高系统的安全性和用户体验。

这就是springsecurity对于记住我的处理逻辑,我想要通过记住我登录的时候,访问无权限接口依然调用AccessDeniedHandler抛出无权限,下面是我的处理方案。

1.在自定义AuthenticationEntryPoint 指出authException instanceof InsufficientAuthenticationException异常返回无权限。

复制代码
@Component
@Slf4j
public class MyAuthenticationEntryPoint implements AuthenticationEntryPoint {

    @Autowired
    ObjectMapper objectMapper;

    @Override
    public void commence(HttpServletRequest request, HttpServletResponse response,
                         AuthenticationException authException) throws IOException {
        response.setContentType("text/html;charset=UTF-8");
        log.warn("", authException);
        if (authException instanceof InsufficientAuthenticationException) {
            response.getWriter().write(objectMapper.writeValueAsString(R.error().code(HttpStatus.FORBIDDEN.value()).message("无权限!")));
        }else {
            response.getWriter().write(objectMapper.writeValueAsString(R.error().code(HttpStatus.UNAUTHORIZED.value()).message("未登录!")));
        }
    }
}

2.在配置类里定义http.anonymous().disable()//禁止匿名用户,防止未通过身份认证的用户进行鉴权,从而抛出InsufficientAuthenticationException。

相关推荐
indexsunny3 小时前
互联网大厂Java求职面试实战:Spring Boot微服务与Redis缓存场景解析
java·spring boot·redis·缓存·微服务·消息队列·电商
无心水3 小时前
【分布式利器:腾讯TSF】7、TSF高级部署策略全解析:蓝绿/灰度发布落地+Jenkins CI/CD集成(Java微服务实战)
java·人工智能·分布式·ci/cd·微服务·jenkins·腾讯tsf
28岁青春痘老男孩8 小时前
JDK8+SpringBoot2.x 升级 JDK 17 + Spring Boot 3.x
java·spring boot
方璧8 小时前
限流的算法
java·开发语言
元Y亨H8 小时前
Nacos - 服务注册
java·微服务
曲莫终8 小时前
Java VarHandle全面详解:从入门到精通
java·开发语言
一心赚狗粮的宇叔9 小时前
中级软件开发工程师2025年度总结
java·大数据·oracle·c#
奋进的芋圆9 小时前
DataSyncManager 详解与 Spring Boot 迁移指南
java·spring boot·后端
计算机程序设计小李同学9 小时前
个人数据管理系统
java·vue.js·spring boot·后端·web安全
小途软件10 小时前
用于机器人电池电量预测的Sarsa强化学习混合集成方法
java·人工智能·pytorch·python·深度学习·语言模型