security校验时获取用户信息
时间: 2023-10-18 15:14:45 浏览: 33
在进行security校验时,可以通过Spring Security提供的SecurityContextHolder类获取当前用户的信息。SecurityContextHolder类是一个线程绑定的类,用于存储认证信息和授权信息。它包含一个SecurityContext对象,而SecurityContext对象包含了当前用户的认证信息和授权信息。
以下是获取当前用户信息的示例代码:
```
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
String username = authentication.getName();
List<GrantedAuthority> authorities = (List<GrantedAuthority>) authentication.getAuthorities();
```
上述代码中,通过SecurityContextHolder.getContext().getAuthentication()方法获取当前用户的Authentication对象,然后通过Authentication对象获取用户名和授权信息。其中,用户名可以通过getName()方法获取,授权信息可以通过getAuthorities()方法获取,返回的是一个List类型的GrantedAuthority对象列表。
相关问题
SpringSecurity 校验token
Spring Security可以通过校验token来实现权限的校验。在Spring Security中,可以通过自定义实现UserDetailsService接口的类来加载用户信息,并在loadUserByUsername方法中进行token的验证。具体步骤如下:
1. 创建一个实现UserDetailsService接口的类,在该类中重写loadUserByUsername方法,方法参数为token。
2. 在loadUserByUsername方法中,可以根据token从数据库或其他存储中获取用户信息,并创建一个UserDetails对象。可以使用token来验证用户的身份并获取相应的用户权限。
3. 在loadUserByUsername方法中,可以通过调用UserDetails对象的相关方法来设置用户的权限和其他相关信息。
4. 将创建好的UserDetails对象返回。
通过以上步骤,Spring Security就可以通过校验token来实现权限的校验。需要注意的是,具体的token校验逻辑和存储方式可以根据项目需求进行自定义实现。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [SpringSecurity](https://download.csdn.net/download/weixin_42561846/12879985)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *2* *3* [spring security多种校验方式及自实现token总结](https://blog.csdn.net/earthsomeday/article/details/90314067)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
Spring Security OAuth2 自定义用户校验
Spring Security OAuth2提供了多种方式来进行自定义用户校验。引用中提到了一个关键类DefaultWebResponseExceptionTranslator,它实现了WebResponseExceptionTranslator<OAuth2Exception>接口,用于将异常类统一转换成OAuth2Exception,从而借助HttpMesssageConverters来将OAuth2Exception异常转换成错误响应的格式。这个类可以在异常处理中起到关键作用。
另外,Spring Security OAuth2还提供了AuthenticationManager来处理用户认证。在AuthorizationServerSecurityConfigurer中,可以通过HttpSecurityBuilder.getSharedObject方法获取到AuthenticationManager的实例。但在进行AuthorizationServerConfigurerAdapter的配置时,这个共享对象还未被设定,需要自定义ClientCredentialsTokenEndpointFilter并重写其中的getAuthenticationManager方法来获取AuthenticationManager的实例。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* [spring security oauth:自定义异常处理(授权服务)](https://blog.csdn.net/qq_43878324/article/details/123142025)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"]
- *3* [【Spring Security Oauth2】构建授权服务器(五):自定义(用户登录)认证策略](https://blog.csdn.net/apple_csdn/article/details/123389101)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]