springsecurity记住我登录时访问无权限接口跳转登录界面的处理方案

 更新时间:2024年02月19日 10:53:55   作者:星梦客  
这篇文章主要介绍了springsecurity记住我登录时访问无权限接口跳转登录界面的处理方案,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧

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

  • 未登录状态:如果用户尝试访问需要认证的资源但未登录,即未经过认证,在这种情况下应该跳转到登录页面或者返回登录提示,让用户进行身份验证。通过调用 AuthenticationEntryPoint 可以统一处理未登录状态下的跳转逻辑,确保用户体验一致性。
  • 记住我状态:用户可能选择了“记住我”功能,在记住我状态下,用户的会话仍然有效,但并没有进行实际的身份验证。如果用户在记住我状态下访问需要认证的资源,也应该跳转到登录页面进行实际的身份验证,而不是直接拒绝访问。通过调用 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。

到此这篇关于springsecurity记住我登录时访问无权限接口,跳转登录界面的文章就介绍到这了,更多相关springsecurity跳转登录界面内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java动态代理四种实现方式详解

    Java动态代理四种实现方式详解

    这篇文章主要介绍了Java四种动态代理实现方式,对于开始学习java动态代理或者要复习java动态代理的朋友来讲很有参考价值,有感兴趣的朋友可以参考一下
    2021-04-04
  • Android bdflow数据库神器的使用

    Android bdflow数据库神器的使用

    这篇文章主要介绍了Android bdflow数据库神器的使用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • Java追加文件内容的三种方法实例代码

    Java追加文件内容的三种方法实例代码

    本篇文章主要介绍了Java追加文件内容的三种方法实例代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-04-04
  • 详解Java分布式事务的 6 种解决方案

    详解Java分布式事务的 6 种解决方案

    在分布式系统、微服务架构大行其道的今天,服务间互相调用出现失败已经成为常态,本文侧重于其他几项,关于 2PC、3PC 传统事务,网上资料已经非常多了,这里不多做重复,本文通过示例给大家介绍Java分布式事务的 6 种解决方案,一起看看吧
    2021-06-06
  • Java基于装饰者模式实现的染色馒头案例详解

    Java基于装饰者模式实现的染色馒头案例详解

    这篇文章主要介绍了Java基于装饰者模式实现的染色馒头案例,简单描述了装饰者模式的概念、原理及Java使用装饰者模式的相关实现步骤、操作技巧与注意事项,需要的朋友可以参考下
    2018-05-05
  • Java线程池框架核心代码解析

    Java线程池框架核心代码解析

    这篇文章主要针对Java线程池框架核心代码进行详细解析,分析Java线程池框架的实现ThreadPoolExecutor,感兴趣的小伙伴们可以参考一下
    2016-07-07
  • SpringBoot+Vue跨域配置(CORS)问题得解决过程

    SpringBoot+Vue跨域配置(CORS)问题得解决过程

    在使用 Spring Boot 和 Vue 开发前后端分离的项目时,跨域资源共享(CORS)问题是一个常见的挑战,接下来,我将分享我是如何一步步解决这个问题的,包括中间的一些试错过程,希望能够帮助到正在经历类似问题的你
    2024-08-08
  • 分析ZooKeeper分布式锁的实现

    分析ZooKeeper分布式锁的实现

    在分布式的情况下,sychornized 和 Lock 已经不能满足我们的要求了,那么就需要使用第三方的锁了,这里我们就使用 ZooKeeper 来实现一个分布式锁
    2021-06-06
  • 一个牛人给Java初学者的建议(必看篇)

    一个牛人给Java初学者的建议(必看篇)

    下面小编就为大家带来一篇一个牛人给Java初学者的建议(必看篇)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • Java 生成PDF文档的示例代码

    Java 生成PDF文档的示例代码

    这篇文章主要介绍了Java 生成PDF文档的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08

最新评论