Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring mvc Sprint Rest AuthenticationPrincipal仅返回空值的customUser_Spring Mvc_Spring Security - Fatal编程技术网

Spring mvc Sprint Rest AuthenticationPrincipal仅返回空值的customUser

Spring mvc Sprint Rest AuthenticationPrincipal仅返回空值的customUser,spring-mvc,spring-security,Spring Mvc,Spring Security,我正在尝试在spring boot REST后端获取当前登录的用户(基本身份验证): @RequestMapping(value = "/someURL", method = RequestMethod.GET) public @ResponseBody Map someMethod( Authentication auth, // <==== works @AuthenticationPrincipal(expression = "liquidoUserModel") Us

我正在尝试在spring boot REST后端获取当前登录的用户(基本身份验证):

@RequestMapping(value = "/someURL", method = RequestMethod.GET)
public @ResponseBody Map someMethod(
  Authentication auth,   //  <==== works
  @AuthenticationPrincipal(expression = "liquidoUserModel") UserModel liquidoUserModel    
)  
{
  log.debug(auth.getPrincipal())  // <==== THIS WORKS
  log.debug(liquidoUserModel)  // <==== returns an intance with empty fields
}
这是我的用户详细信息服务

public class LiquidoUserDetailsService implements UserDetailsService {
  @Autowired
  UserRepo userRepo;

  @Override
  public LiquidoAuthUser loadUserByUsername(String email) throws UsernameNotFoundException {
    UserModel userModel = userRepo.findByEmail(email);
    return new LiquidoAuthUser(userModel.getEmail(), userModel.getPasswordHash(), getGrantedAuthorities(userModel), userModel);
  }
}
最后是liquidauthuser

public class LiquidoAuthUser extends User {  
  private UserModel liquidoUserModel;

  public LiquidoAuthUser(String username, String password, Collection<? extends GrantedAuthority> authorities, UserModel liquidoUserModel) {
    super(username, password, authorities);
    this.liquidoUserModel = liquidoUserModel;
  }

  public UserModel getLiquidoUserModel() {
    return liquidoUserModel;
  }

  public void setLiquidoUserModel(UserModel userModel) {
    this.liquidoUserModel = userModel;
  }
}
公共类LiquidoAuthUser扩展用户{
私有用户模型liquidoUserModel;

公共LiquidoAuthUser(字符串用户名、字符串密码、集合我尝试并调试了您的代码,但未能找到问题
@AuthenticationPrincipal。通常,此批注由spring security web批注的AuthenticationPrincipalArgumentResolver类解决。通过使用@EnableWebSecurity,您将自动将其添加到spring MVC配置中。需要调试更多有关AuthenticationPrincipalArgumentResolver的信息,我将暂时建议使用身份验证类获取您的对象

public class LiquidoAuthUser extends User {  
  private UserModel liquidoUserModel;

  public LiquidoAuthUser(String username, String password, Collection<? extends GrantedAuthority> authorities, UserModel liquidoUserModel) {
    super(username, password, authorities);
    this.liquidoUserModel = liquidoUserModel;
  }

  public UserModel getLiquidoUserModel() {
    return liquidoUserModel;
  }

  public void setLiquidoUserModel(UserModel userModel) {
    this.liquidoUserModel = userModel;
  }
}