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跳转登录界面内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
- springsecurity实现用户登录认证快速使用示例代码(前后端分离项目)
- SpringSecurity自定义资源拦截规则及登录界面跳转问题
- 解决springSecurity 使用默认登陆界面登录后无法跳转问题
- SpringSecurity表单配置之登录成功及页面跳转原理解析
- SpringSecurity 默认登录认证的实现原理解析
- SpringSecurity默认登录页的使用示例教程
- SpringSecurityOAuth2实现微信授权登录
- SpringSecurity实现前后端分离登录token认证详解
- springSecurity实现简单的登录功能
- SpringSecurity自定义登录成功处理
- SpringSecurity多表多端账户登录的实现
相关文章
SpringBoot+Vue跨域配置(CORS)问题得解决过程
在使用 Spring Boot 和 Vue 开发前后端分离的项目时,跨域资源共享(CORS)问题是一个常见的挑战,接下来,我将分享我是如何一步步解决这个问题的,包括中间的一些试错过程,希望能够帮助到正在经历类似问题的你2024-08-08
最新评论