- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我一直在尝试让 @AuthenticationPrincipal 与自定义 User 类一起正常工作。不幸的是,用户始终为空。代码如下:
Controller
@RequestMapping(value = "/", method = RequestMethod.GET)
public ModelAndView index(@AuthenticationPrincipal User user) {
ModelAndView mav= new ModelAndView("/web/index");
mav.addObject("user", user);
return mav;
}
安全配置
@Configuration
@EnableWebMvcSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
CustomUserDetailsService customUserDetailsService;
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(customUserDetailsService).passwordEncoder(passwordEncoder());
}
}
CustomUserDetailsService
@Component
public class CustomUserDetailsService implements UserDetailsService {
@Autowired
UserRepository userRepository;
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
// Spring Data findByXY function
return userRepository.findByUsername(username);
}
用户实体
public class User implements UserDetails{
private String username;
private String password;
private Collection<Authority> authorities;
// Getters and Setters
}
权威实体
public class Authority implements GrantedAuthority{
private User user;
private String role;
// Getters and Setters
@Override
public String getAuthority() {
return this.getRole();
}
}
我已经尝试了各种我在网上找到的解决方案,例如像这样转换我的自定义用户对象:
return new org.springframework.security.core.userdetails.User(user.getLogin(), user.getPassword(), true, true, true, true, authorities);
获得活跃用户的其他方法都没有问题,但我发现@AuthenticationProvider CustomUserObject 是最干净的方法,这就是我想让它工作的原因。非常感谢任何帮助。
最佳答案
您可以直接在方法参数中指定对经过身份验证的用户的依赖,而不是使用@AuthenticationPrincipal。如下所示
@RequestMapping(value = "/", method = RequestMethod.GET)
public ModelAndView index(Principal user) {
ModelAndView mav= new ModelAndView("/web/index");
mav.addObject("user", user);
return mav;
}
此 Principal 对象将是通过 Spring Security 进行身份验证的实际对象。当方法被调用时,Spring 会为你注入(inject)这个。
关于java - Spring Security @AuthenticationPrincipal,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33616386/
我最近刚刚从 Spring Security 3 升级到 4,我的 @AuthenticationPrincipal Controller 中带注释的输入参数现在为空。我设法通过使用已弃用的 org.
我有这个 Controller ,我在其中保存与当前经过身份验证的用户关联的帖子信息: @PostMapping("/create") public String processPost(
这个测试项目因为我不知道如何在方法中注入(inject)@AuthenticationPrincipal 注释,我有一些问题,@AuthenticationPrincipal UserDetails
出于开发目的,我尝试配置一个开发配置文件,开发人员无需在应用程序中进行身份验证即可调用 REST 服务。 但是,其中一些服务需要 @AuthenticationPrincipal 才能工作。因此,我希
我一直在尝试让 @AuthenticationPrincipal 与自定义 User 类一起正常工作。不幸的是,用户始终为空。代码如下: Controller @RequestMapping(valu
我根据reference document设置了Spring Security应用程序,经过数小时的故障排除后,我继续将空 @AuthenticationPrincipal 传递到 Controlle
@AuthenticationPrincipal 对象返回存储在 session 中的先前值。 Spring boot + spring security oauth REST 服务器。 https:
我正在尝试在我的项目中使用 kotlin,它是服务于 angularjs 前端的 REST API 端点。我将 spring rest doc 用于我们的 api 文档。 迁移时,我发现我的安全上下文
我正在尝试获取如下所示的UserDetails对象。但是,我有一些困难,无法获取 UserDetails 对象,因此 authentication.getAttributes() 中只有 JSONOb
如您所知,web.bind.annotation.AuthenticationPrincipal 中的@AuthenticationPrincipal 已弃用。推荐使用 core.annotation
截至Spring Security doc: 34.1 @EnableWebMvcSecurity状态,@EnableWebMvcSecurity已替换为 @EnableWebSecurity . 但
我使用 Spring Boot 2.2.5 和 Spring Security 5.2.2,使用 spring-security-oauth2-resource-server 和 spring-sec
使用 Spring Boot 1.3.1,我遇到了 @AuthenticationPrincipal 问题。 这是我的 Controller : @RestController @RequestMap
我想使用 @AuthenticationPrincipal 在我的 Controller 方法中检索当前用户注解。该文档声明如下: Annotation that binds a method par
我一直在 Spring Security + Webflux 中使用 ReactiveAuthenticationManager。它被定制为返回 UsernamePasswordAuthenticat
我有一个现有的 Spring Boot 应用程序,它对由第三方身份验证服务处理的 Web 应用程序进行身份验证。与 SiteMinder 一样,第 3 方服务将 header 注入(inject) H
我在尝试测试接收 UserDetails 作为使用 @AuthenticationPrincipal 注释的参数的 REST 端点时遇到问题。 似乎没有使用在测试场景中创建的用户实例,而是尝试使用默认
上下文:我有一个用OAuth2 JWT保护的Spring Boot rest API,这部分工作正常。。问题:在我的RestController中,我想用@AuthenticationPrincipa
我是一名优秀的程序员,十分优秀!