[英]Spring Boot - how to get authentication details from HttpServetRequest in my Request interceptor?
我想从我的请求拦截器中获取身份验证详细信息,例如userId
、 companyId
,来自HttpServletRequest
。 我有请求拦截器,我必须获取当前登录用户的 companyId 才能执行某个逻辑。
我的 Controller:
@PostMapping(consumes = "application/json")
@ResponseStatus(value = HttpStatus.CREATED)
public IdDto createTa(Authentication auth,...)
@Component
@RequiredArgsConstructor
public class GlobalInterceptor extends HandlerInterceptorAdapter {
private final TaService taService;
@Override
public boolean preHandle(@NonNull HttpServletRequest requestServlet, @NonNull HttpServletResponse responseServlet, @NonNull Object handler) {
taService.checkIfRequestAllowed();
return true;
}
可能吗?
在您的方法中,使用以下内容获取 UserDetails,您必须将其转换为您的 Details object。 无论您使用什么来进行身份验证。 该方法返回Object
需要转换为您使用的特定UserDetails
object
UserDetails ud = (UserDetails) SecurityContextHolder.getContext().getAuthentication().getDetails();
请记住在您已经必须检查身份验证的拦截器之后注册此拦截器
或者您可以在GlobalInterceptor
中添加@Order(Ordered.LOWEST_PRECEDENCE)
以便 spring 将此拦截器作为已存在顺序中的最后一个处理。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.