【发布时间】:2018-01-05 23:19:26
【问题描述】:
我目前在我的 django 应用程序中使用默认的数据库支持会话模型。前端是一个与 REST API 交互的 SPA,并具有异步登录功能,因此用户在会话超时时不会丢失页面。我正在尝试检测浏览器中的会话何时超时,以便显示登录模式。
但是:
- 如果
User不再被授权执行 API 请求 因为他们不再登录,所以他们得到一个 HTTP403。 - 如果
User尝试访问属于其他Users的对象实例, 他们还获得了 HTTP403。
所以我需要区分这两个 403。我的直觉是比较sessionid cookie 和now 的到期时间,但是:
- cookie 是
httpOnly - 到期未设置
因此我的问题是:如何在浏览器中判断我的 django 会话是否已过期?
【问题讨论】:
-
当用户没有被授权时你可以 HTTP401 和 HTTP403 如果用户试图访问属于其他用户的对象实例
-
这不是你要问的,但我认为你最好使用 JWT 而不是会话。它更适合 REST API,您可以定期刷新令牌,并且可以在 Javascript 中对令牌进行解码以检索到期时间,因此您可以在不发出 HTTP 请求的情况下检查它是否已过期。如果您使用的是 Django REST 框架,则使用 JWT 很简单。
-
我将接受 401 答案,因为这是我提出的问题的答案,但我同意令牌会更好。谢谢!