Google如何在不通过HttpServletRequest请求参数的情况下调用userService.getCurrentUser()?我希望扩展UserService,但它不允许我轻松地这样做。
我创建了自己的身份验证机制,与UserService重叠,以便我可以允许Google支持的用户和将自动登录的用户。但我很想知道如何在从任何函数调用时发送getCurrentUser。
这是当前的工作流程
请求保护资源 - >过滤器 - >将当前用户设置在某个地方,但我不确定在哪里,以便我可以从应用程序的其余部分调用它而不传递httprequests ..
在我的代码中
GetCurrentUser()应返回过滤器中设置的用户。请注意,我不会传递原始的HttpServletRequest
感谢。
答案 0 :(得分:0)
经过几天的研究,我们可以安全地在ThreadLocal中保存会话信息。这是在servlet过滤器中设置的。 Static ThreadLocal variable in a WebApp - Are there any Security/Performance issues?
由于每个servlet都在一个线程中执行,我们可以安全地从代码中调用getCurrentUser,然后从threadlocal中读取。
但是,请注意。线程被回收。因此,您可以获得一个为不同用户设置threadlocal的线程。你必须确保每次都重置它。