先附上
- public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
- throws IOException, ServletException {
- HttpServletRequest request = (HttpServletRequest) req;
- HttpServletResponse response = (HttpServletResponse) res;
-
- if (requiresLogout(request, response)) {
- Authentication auth = SecurityContextHolder.getContext().getAuthentication();
-
- if (logger.isDebugEnabled()) {
- logger.debug("Logging out user '" + auth + "' and transferring to logout destination");
- }
-
- for (LogoutHandler handler : handlers) {
- handler.logout(request, response, auth);
- }
-
- logoutSuccessHandler.onLogoutSuccess(request, response, auth);
-
- return;
- }
-
- chain.doFilter(request, response);
- }
-
-
-
-
-
-
-
-
-
- protected boolean requiresLogout(HttpServletRequest request, HttpServletResponse response) {
- String uri = request.getRequestURI();
- int pathParamIndex = uri.indexOf(';');
-
- if (pathParamIndex > 0) {
-
- uri = uri.substring(0, pathParamIndex);
- }
-
- int queryParamIndex = uri.indexOf('?');
-
- if (queryParamIndex > 0) {
-
- uri = uri.substring(0, queryParamIndex);
- }
-
- [color=red]if ("".equals(request.getContextPath())) {
- return uri.endsWith(filterProcessesUrl);
- }[/color]
-
- return [color=red]uri.endsWith(request.getContextPath() + filterProcessesUrl)[/color];
- }
requiresLogout方法是判断url是否为 logout_url 的,居然用了 endsWith,我进行了测试,只要地址后缀为 j_spring_security_logout 的 都能退出系统。
而且
if ("".equals(request.getContextPath())) {
return uri.endsWith(filterProcessesUrl);
}这段代码貌似没用, 直接用下面那个就能比较出来。
大家有什么看法?
分享到:
相关推荐
用SpringSecurity原生的logout实现功能,具体讲解可参考: https://blog.csdn.net/u012329294/article/details/105382239
Spring-Security结合JWT 实现前后端分离完成权限验证功能案例,案例中,主要完成用户登录获取Token,通过Token访问Rest接口,没有权限或授权失败时返回JSON,前端根据状态码进行重新登录;案例中的用户名称: jake_j...
这次发布的Spring Security-3.0.1 是一个bug fix 版,主要是对3.0 中存在的一些问题进 行修 正。文档中没有添加新功能的介绍,但是将之前拼写错误的一些类名进行了修正,建议开发 者以这一版本的文档为参考。 ...
5.5. Spring Security中的访问控制(验证) 5.5.1. 安全和AOP建议 5.5.2. 安全对象和AbstractSecurityInterceptor 5.5.2.1. 配置属性是什么? 5.5.2.2. RunAsManager 5.5.2.3. AfterInvocationManager ...
设置一个自定义的AuthenticationEntryPoint 64 6.4方法安全 64 6.4.1 <global-method-security>元素 65 使用protect-pointcut添加安全性切入点 66 6.5默认AccessDecisionManager 67 6.5.1自定义...
本文将介绍在Spring Security框架下如何实现用户的"退出"logout的功能。本文通过实例代码讲解的非常详细,具有一定的参考借鉴价值,需要的朋友参考下吧
5.5. Spring Security中的访问控制(验证) 5.5.1. 安全和AOP建议 5.5.2. 安全对象和AbstractSecurityInterceptor 5.5.2.1. 配置属性是什么? 5.5.2.2. RunAsManager 5.5.2.3. AfterInvocationManager 5.5.2.4...
该存储库包含一个示例Spring Boot应用程序,用于演示Spring Security和OIDC的各种注销选项。 请阅读以了解如何创建此应用程序。 先决条件: 拥有身份验证和用户管理API,可通过即时,可扩展的用户基础架构缩短...
spring-security-pac4j项目是一个用于Spring Security Web应用程序和Web服务(带有或不带有Spring Boot)的简单而强大的安全性库。 它支持身份验证和授权,还支持会话固定和CSRF保护等高级功能。 它基于Java 8,...
spring-security-demo-05-注销Ejemplo de proyecto spring security para登出
flex中的login,logout示例.本文是从网上搜集来的资源,现转载。
Administrator auto logOUT
mac logout 代码,系统注销后,清理2桌面上的文件
phpCAS源码以及调用示例(redis管理session,解决无法logout的问题)
bash.bash_logout888
Laravel开发-logout-plugin 指定时间后自动注销已验证的后端用户。
程序员小妹是一个目前已经上线的论坛的源代码。 ##简介程序员小妹主要使用Spring Boot,Spring Security,Spring JPA开发成型。项目组装工具为Gradle,国内的小伙伴在使用的时候,记得配置过多,不然仅下载依赖就...
一个Spring Boot示例应用程序,展示了如何使用Spring Security的SAML DSL和Okta实现单点登录(SSO)。 请阅读以了解如何创建此应用程序。 先决条件: 。 具有身份验证和用户管理API,可通过即时,可扩展的用户...
。
应用概述产品特点简单的登录屏幕用户注册通过Basic身份验证层保护的端点用于在数据库中存储用户的持久层终点"/admin/home"一个安全的终结点,该终结点以thymeleaf生成的text/html形式返回网页。"/login"标准Spring...