2013-11-24 117 views
0

我有两个web应用程序不同的东西,但身份验证只能通过一个(使用python和龙卷风),id喜欢让第二个应用程序透明地访问用户的凭证,目前我可以通过头部读取已登录用户的cookie:Access-Control-Allow-Credentials,那么我将如何访问cookie,以便我可以将其保存(mongodb/redis/anywhere-but-mysql),并在第二个应用中检索它? 我已经试过:tornadoweb:在数据库中存储cookie并检索它们

self.set_secure_cookie('cookie_name') # works i can see the cookie in subsequent request headers 
self.get_secure_cookie("cookie_name") # just after setting the cookie returns None 

我在想什么是存储加密值,并在需要时在第二应用程序后进行比较和,这是明智的?所有我需要做的就是确保用户登录到 ,并且它们现在存在于用户列表中。

回答

2

所以你已经成功地设置了一个服务器的cookie,然后在第二个检索它?如果是这样,太棒了!这是最棘手的部分(imho)。

现在有两种方法可以去。

  1. 在cookie
    龙卷风存储的数据有,因为你已经注意到了,出于安全cookie支持。这基本上意味着您可以将数据存储在Cookie中并用秘密签名。如果两台服务器都具有相同的密码,则可以验证cookie数据未被更改,并且您已在两台服务器之间成功分发数据。如果您需要在会话中存储大量数据,则这种分散式替代方案不适用。

  2. 共享数据库(或其他服务器可以使用的API)
    如果使用此解决方案,您只需将cookie存储在cookie中。不需要使用安全cookie,因为它没有存储数据。您只需生成一个SSID,例如ssid = uuid.uuid4().hex,将其存储在名为类似ssid的cookie中,并将记录与要存储的所有会话数据一起添加到数据库。我真的很喜欢Redis,因为你可以在创建时设置过期时间,不必担心这个问题,速度非常快,最好的事情是有一个很好用的,易于使用的异步库,可以和龙卷风一起使用。

相关问题