如何在浏览器中判断基于django DB的会话是否已过期?
我目前正在django应用程序中使用默认的数据库支持会话模型。前端是一个SPA,它与RESTAPI接口,并具有异步登录,这样用户在会话超时时不会丢失页面。我试图在浏览器中检测会话何时超时,以便显示登录模式 然而:如何在浏览器中判断基于django DB的会话是否已过期?,django,session,cookies,Django,Session,Cookies,我目前正在django应用程序中使用默认的数据库支持会话模型。前端是一个SPA,它与RESTAPI接口,并具有异步登录,这样用户在会话超时时不会丢失页面。我试图在浏览器中检测会话何时超时,以便显示登录模式 然而: 如果用户不再被授权执行API请求 因为他们不再登录,他们得到了一个HTTP403 如果用户试图访问属于其他用户的对象实例, 他们还得到了一个HTTP403 所以我需要区分这两个403。我的直觉是比较sessionidcookie和now的过期时间,但是: cookie是httpOn
- 如果用户不再被授权执行API请求 因为他们不再登录,他们得到了一个HTTP403李>
- 如果
试图访问属于其他用户
, 他们还得到了一个HTTP403用户的对象实例
sessionid
cookie和now
的过期时间,但是:
httpOnly
因此我的问题是:如何在浏览器中判断我的django会话是否已过期?根据标准,HTTP401用于未经授权的访问。你可以在这里找到更多关于HTTP401的信息。
当用户未经授权时,您可以使用HTTP401;如果用户试图访问属于其他用户的对象实例,您可以使用HTTP403。这并不是您想要的,但我认为您最好使用JWT而不是会话。它更适合RESTAPI,您可以定期刷新令牌,并且可以用Javascript解码令牌以检索到期时间,因此您可以在不发出HTTP请求的情况下检查它是否已到期。如果您使用的是Django REST框架,那么使用JWT就很简单了。我将接受401答案,因为这是我所问问题的答案,但我同意令牌会更好。谢谢这与OP的要求完全无关。您提供的最后一步是发送401,这是正确的,但不是答案