【问题标题】:getCurrentUser Magic in AppEngine - how does it work?AppEngine 中的 getCurrentUser Magic - 它是如何工作的?
【发布时间】:2012-10-11 04:34:09
【问题描述】:

Google 如何允许在不传递 HttpServletRequest 请求参数的情况下调用 userService.getCurrentUser()?我希望扩展 UserService,但它不允许我轻松做到这一点。

我创建了自己的身份验证机制,它与 UserService 重叠,以便我可以允许 Google 支持的用户和自动登录的用户。但我很想知道如何在从任何函数调用时发送 getCurrentUser。

这是当前的工作流程

请求保护资源 -> 过滤器 -> 在某处设置当前用户,但我不确定在哪里,这样我就可以从应用程序的其余部分调用它而无需传递 httprequests..

在我的代码中

GetCurrentUser() 应该返回过滤器中设置的用户。请注意,我不会传递原始的 HttpServletRequest

谢谢。

【问题讨论】:

    标签: google-app-engine


    【解决方案1】:

    经过几天的研究,我们可以安全地将会话信息保存在 ThreadLocal 中。这是在 servlet 过滤器中设置的。 Static ThreadLocal variable in a WebApp - Are there any Security/Performance issues?

    由于每个 servlet 在单个线程中执行,我们可以安全地从代码中调用 getCurrentUser,然后从 threadlocal 读取。

    请注意。线程被回收。因此,您可以获得一个为不同用户设置了 threadlocal 的线程。您必须确保每次都重置它。

    【讨论】:

      猜你喜欢
      • 2020-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-26
      • 2011-03-18
      • 2015-06-16
      • 2012-08-31
      • 2012-07-13
      相关资源
      最近更新 更多