繁体   English   中英

Spring 引导 - 如何在我的请求拦截器中从 HttpServetRequest 获取身份验证详细信息?

[英]Spring Boot - how to get authentication details from HttpServetRequest in my Request interceptor?

我想从我的请求拦截器中获取身份验证详细信息,例如userIdcompanyId ,来自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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM