昨天在公司测试spring security,在controller里边发现SecurityContextHolder.getContext().getAuthentication()始终为null,百思不得其解,google上查半天也没解决,这样那样的说法都有,回家后继续google,结果有一阵不知搜什么词语了不让继续访问了,只好用百度,别说真找到答案了,头一次百度在技术搜索战胜了google,下面是解决方案地址,不多说了:
http://blog.csdn.net/jjk_02027/article/details/6544889
http://www.oschina.net/question/230429_51547
http://stackoverflow.com/questions/7573899/retrieve-spring-securitys-authentication-even-on-public-pages-with-filter-non/7574241#7574241
关键就是要把filters="none" 变化为相应的权限如access="permitAll"(必须设置<http auto-config="true" use-expressions="true">,否则会提示permitAll找不到),或者access = "IS_AUTHENTICATED_ANONYMOUSLY, IS_AUTHENTICATED_FULLY, IS_AUTHENTICATED_REMEMBERED"
,当然security 3.1是要修改<http pattern="/login" security="none"/>这类的
相关推荐
作者认为,获取用户信息需要通过配置,首先需要了解为什么 Oauth2 通过 `SecurityContextHolder.getContext().getAuthentication().getPrincipal()` 获取到的是用户名。然后,作者提供了解决方案,即通过设置 `...
Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal(); if (principal instanceof UserDetails) { UserDetails userDetails = (UserDetails) principal; return ...
通常,Spring Security允许我们通过`SecurityContextHolder.getContext().getAuthentication().getPrincipal()`来获取详细的用户信息,但当你尝试在OAuth2环境中使用同样的方法时,你可能只会得到当前用户的用户名,...
Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); if (authentication != null && authentication.isAuthenticated()) { Object principal = authentication....
= null && SecurityContextHolder.getContext().getAuthentication() == null) { UserDetails userDetails = this.userDetailsService.loadUserByUsername(username); if (jwtUtil.validateToken(jwt, ...
4. **Spring Security**: 如果应用集成了 Spring Security,可以使用 `SecurityContextHolder.getContext().getAuthentication().getPrincipal()` 获取认证对象,然后根据具体实现(如 `UserDetails`)获取 IP 地址...
SecurityContext sc = SecurityContextHolder.getContext(); sc.setAuthentication(auth); ``` 在上下文中设置身份验证后,我们现在可以使用securityContext.getAuthentication().isAuthenticated()检查当前用户...
我们可以在业务逻辑中通过`SecurityContextHolder.getContext().getAuthentication()`获取认证对象,从而获取用户信息。 9. **测试与调试** "spring-security-helloworld-annotation"项目中可能包含了一些测试类,...
Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); if (authentication != null && authentication.isAuthenticated()) { return (UserDetails) authentication....
Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); if (authentication != null && authentication.isAuthenticated() && hasPermission(authentication)) { getJspBody...
String userId = SecurityContextHolder.getContext().getAuthentication().getName(); return userId; // 返回对应的数据源名 } } ``` 3. **配置主数据源**: 在SpringBoot的配置类中,设置`DynamicDataSource`...
SecurityContext context = SecurityContextHolder.getContext(); Authentication auth = context.getAuthentication(); // 检查用户角色是否具有执行方法的权限 // ... } ``` 在这个例子中,我们假设使用了...
= null && SecurityContextHolder.getContext().getAuthentication() == null) { UserDetails userDetails = this.userDetailsService.loadUserByUsername(username); if (tokenProvider.validateToken(jwt, ...
此外,Spring Boot还可以提供API来获取当前登录用户的信息,如`SecurityContextHolder.getContext().getAuthentication().getPrincipal()`。 为了提升安全性,JWT还支持刷新Token的概念。当Token即将过期时,用户...
通过 `SecurityContextHolder.getContext().getAuthentication()` 方法可以获取当前用户的信息。 #### UserDetailsService `UserDetailsService` 接口定义了获取用户信息的方法,是 Spring Security 实现认证逻辑...
Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); Collection<? extends GrantedAuthority> authorities = authentication.getAuthorities(); // 根据权限信息来控制...
- **方法:** 通过`SecurityContextHolder.getContext().getAuthentication()`可以获取到当前用户的认证信息。 **5.3 验证** - **Spring Security 的验证机制:** 支持多种认证方式,如数据库认证、LDAP认证等。 - ...
可以通过`SecurityContextHolder.getContext().getAuthentication()`获取当前认证信息。 **7. 自定义访问拒绝页面** 通过配置,可以让Spring Security在用户没有权限访问某个资源时展示自定义的页面。 **8. 动态...
SecurityContextHolder.getContext().setAuthentication(authentication); } } catch (Exception e) { log.warn("Cannot authenticate user due to invalid token", e); } } chain.doFilter(request, ...