所有信息均可通过访问
HttpServletRequest。您可以通过以下方式获取它:依赖注入
最简单的方法是将servlet请求直接注入您的
UserDetailsService:类中:
public MyDetailsService implements UserDetailsService { @Autowired private HttpServletRequest request; //...}
(由OP建议) 请记住将以下侦听器添加到您的
web.xml:
<listener> <listener-class> org.springframework.web.context.request.RequestContextListener </listener-class></listener>
更新:之所以
HttpServletRequest可行,是因为Spring注入了特殊范围的代理实现,因此您可以从singleton-
scoped访问请求范围的请求“ bean”
MyDetailsService。在幕后,每次调用时都会调用
request参数
org.springframework.web.context.request.RequestContextHolder#requestAttributesHolder
ThreadLocal,您也可以直接访问这些参数。如您所见,Spring在范围规则方面非常灵活。它只是工作。
RequestContextHolder
另一种方法是使用
RequestContextHolder:
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder. currentRequestAttributes()). getRequest();
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)