作者:手机用户2502860763 | 来源:互联网 | 2023-10-11 16:55
1、Spring Security测试工程搭建
(1)建立Maven项目casclient_demo3 ,引入spring依赖和spring secrity 相关依赖 ,tomcat端口设置为9003。
(2)建立web.xml ,添加过滤器等配置。
(3)创建配置文件spring-security.xml。
(4)添加html页面。
2、Spring Security与 CAS集成
(1)引入依赖
org.springframework.security spring-security-cas 4.1.0.RELEASE
org.jasig.cas.client cas-client-core 3.3.3 org.slf4j log4j-over-slf4j
(2)修改spring-security.xml
(3)创建UserDetailsServiceImpl
/*** 认证类*/
public class UserDetailServiceImpl implements UserDetailsService {@Overridepublic UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {//构建角色集合List authorities=new ArrayList();authorities.add(new SimpleGrantedAuthority("ROLE_USER"));return new User(username, "" , authorities); }
}
这个类的主要作用是在登陆后得到用户名,可以根据用户名查询角色或执行一些逻辑。
3、获取登录名
我们在处理后端逻辑需要获得登录名,那么如何获取单点登录的用户名呢? 其实和我们之前获得用户名的方式是完全相同的,我们下面来做个测试。
(1)web.xml 添加springmvc
springmvcorg.springframework.web.servlet.DispatcherServletcontextConfigLocation
classpath:springmvc.xml
springmvc*.do
(2)创建springmvc.xml
(3)创建UserController
@RestController
public class UserController {@RequestMapping("/findLoginUser")public void findLoginUser(){String name = SecurityContextHolder.getContext().getAuthentication().getName();System.out.println(name); }
}
地址栏输入http://localhost:9003/findLoginUser.do即可在控制台看到输出的登录名。
4、退出登录
修改spring-security.xml
在页面上添加链接
退出登录
创建index2.html,将index2.html设置为可匿名访问
附录A. Spring Security 内置过滤器表
别名 | Filter 类 |
CHANNEL_FILTER | ChannelProcessingFilter |
SECURITY_CONTEXT_FILTER | SecurityContextPersistenceFilter |
CONCURRENT_SESSION_FILTER | ConcurrentSessionFilter |
LOGOUT_FILTER | LogoutFilter |
X509_FILTER | X509AuthenticationFilter |
PRE_AUTH_FILTER | AstractPreAuthenticatedProcessingFilter 的子类 |
CAS_FILTER | CasAuthenticationFilter |
FORM_LOGIN_FILTER | UsernamePasswordAuthenticationFilter |
BASIC_AUTH_FILTER | BasicAuthenticationFilter |
SERVLET_API_SUPPORT_FILTER | SecurityContextHolderAwareRequestFilter |
JAAS_API_SUPPORT_FILTER | JaasApiIntegrationFilter |
REMEMBER_ME_FILTER | RememberMeAuthenticationFilter |
ANONYMOUS_FILTER | AnonymousAuthenticationFilter |
SESSION_MANAGEMENT_FILTER | SessionManagementFilter |
EXCEPTION_TRANSLATION_FILTER | ExceptionTranslationFilter |
FILTER_SECURITY_INTERCEPTOR | FilterSecurityInterceptor |
SWITCH_USER_FILTER | SwitchUserFilter |