使用Flask / Django和javascript前端进行身份验证

时间:2016-01-09 08:00:58

标签: django flask reactjs

我很难理解flask_logindjango在用户登录时如何知道他们保留访问权限?

如果我将ReactJsAngularflask-restfuldjango/tastypie一起使用,那么将来添加到未来json请求的标头/正文的内容是什么确保我的用户保持登录状态?

2 个答案:

答案 0 :(得分:2)

这是通过基于cookie的会话完成的。来自the Flask documentation

  

除了请求对象之外,还有一个名为 session 的第二个对象,它允许您将特定于用户的信息从一个请求存储到下一个请求。这是在cookie的基础上实现的,并以加密方式对cookie进行签名。

the Django docs

  

Django为匿名会话提供全面支持。会话框架允许您基于每个站点访问者存储和检索任意数据。它在服务器端存储数据并抽象cookie的发送和接收。 Cookie包含会话ID - 而不是数据本身(除非您使用的是cookie based backend)。

因此,对服务器的请求会自动包含一个cookie,该cookie指示服务器随后使用的一些ID,以确定给定用户的会话数据应该是什么。通常,当从客户端应用程序向服务器发出Ajax请求时,会包含此cookie,因此确保用户被认为是为这些请求登录的。

在某些情况下,您还可以(可选)手动向HTTP请求添加特殊标头,以指示登录的用户。

有关更多信息,另请参阅Securing RESTapi in flask

答案 1 :(得分:1)

如果您使用REST服务,那么您应该查看oAuth。换句话说,它使用您附加到客户端到服务器的每个请求的令牌,最后一个可以确定哪个用户通过此令牌发送了此请求。

另一方面,您可以使用cookie或会话来确定用户状态。在这种情况下,您无需在请求中添加任何标头。

另外,我建议您使用Django的这个包 - Django Rest Framework(可以通过REST阅读更多有关令牌和身份验证的内容)和Flask的this extension