相关疑难解决方法(0)

Spring Security向控制器注入自定义主体

servletApi()对Spring Security的支持很棒.

我想注入自定义Principal:

public interface UserPrincipal extends Principal {
   public Integer getId();
}

@RequestMapping(value = "/")
public ResponseEntity<List<Conversation>> listAfter(UserPrincipal user){
   // implementation
}  

or


@RequestMapping(value = "/")
public ResponseEntity<List<Conversation>> listAfter(UserPrincipalImpl user){
   // implementation
}
Run Code Online (Sandbox Code Playgroud)

Spring支持在Principal实例的帮助下注入实例ServletRequestMethodArgumentResolver.

这是注射校长:

else if (Principal.class.isAssignableFrom(paramType)) {
    return request.getUserPrincipal();
}
Run Code Online (Sandbox Code Playgroud)

这是问题开始的地方.request在这里是一个例子SecurityContextHolderAwareRequestWrapper.它有一个实现:

@Override
public Principal getUserPrincipal() {
    Authentication auth = getAuthentication();

    if ((auth == null) || (auth.getPrincipal() == null)) {
        return null;
    }

    return auth;
 }
Run Code Online (Sandbox Code Playgroud)

因为一个Authentication也是一个Principal …

spring spring-security

5
推荐指数
2
解决办法
6836
查看次数

标签 统计

spring ×1

spring-security ×1