【发布时间】:2016-04-13 23:14:07
【问题描述】:
我很难理解flask_login 或django 如何知道用户何时登录他们保留访问权限?
如果我将ReactJs 或Angular 与flask-restful 或django/tastypie 一起使用,将向未来json 请求的标头/正文添加什么以确保我的用户保持登录状态?
【问题讨论】:
我很难理解flask_login 或django 如何知道用户何时登录他们保留访问权限?
如果我将ReactJs 或Angular 与flask-restful 或django/tastypie 一起使用,将向未来json 请求的标头/正文添加什么以确保我的用户保持登录状态?
【问题讨论】:
这是通过基于 cookie 的会话完成的。来自the Flask documentation:
除了请求对象之外,还有一个名为 session 的对象,它允许您存储从一个请求到下一个请求的特定于用户的信息。这是在 cookie 之上为您实现的,并以加密方式对 cookie 进行签名。
Django 完全支持匿名会话。会话框架允许您基于每个站点访问者存储和检索任意数据。它将数据存储在服务器端,并抽象了 cookie 的发送和接收。 Cookie 包含会话 ID,而不是数据本身(除非您使用的是 cookie based backend)。
因此,对服务器的请求会自动包含一个 cookie,该 cookie 指示服务器使用的某个 ID,然后服务器使用该 ID 来确定给定用户的会话数据应该是什么。通常,当从客户端应用程序向服务器发出 Ajax 请求时,会包含此 cookie,从而确保用户被视为已登录这些请求。
在某些情况下,您还可以(可选)手动向 HTTP 请求添加一个特殊标头,以指示哪个用户已登录。
有关更多信息,另请参阅Securing RESTapi in flask。
【讨论】:
如果您使用 REST 服务,那么您应该看看 oAuth。换句话说,它使用你附加到从客户端到服务器的每个请求的令牌,最后一个可以确定哪个用户通过这个令牌发送了这个请求。
另一方面,您可以使用 cookie 或会话来确定用户状态。在这种情况下,您不需要在请求中添加任何标头。
我还向你推荐这个用于 Django 的包 - Django Rest Framework(在那里你可以通过 REST 阅读有关令牌和身份验证的更多信息)和用于 Flask 的this extension。
【讨论】: