django 前后端分离,登录验证思路

2020-04-13 17:05:32 +08:00
 toohardtowork

django 前后端分离,后端只返回 json,应该如何做登录登出和状态保持,并且拦截未登录用户不能访问,求思路。

4852 次点击
所在节点    Python
13 条回复
JC1027
2020-04-13 17:49:20 +08:00
jwt 吧
workspace
2020-04-13 18:33:47 +08:00
登陆接口逻辑验证成功后 session 设置 is_login 为 True
下次请求检查 session 里的 is_login 如果为 False 即为匿名(未登录)用户
Acoolda
2020-04-13 19:19:10 +08:00
JWT 啊
qsbaq
2020-04-13 19:29:08 +08:00
django 不是自带登陆得么?
@login_required
了解一下。
Hstar
2020-04-13 19:36:05 +08:00
这问题问的也太基础了吧,特别是问题二“如何拦截未登录用户不能访问”。
麻烦去把 dj 官方文档的 Authentication 一章节全看完,比我们在这回帖全面好多。
horkooo
2020-04-13 19:37:56 +08:00
token 验证和 token 刷新。前端想用户体验高的话跟后端约定好 token 过期时间,前端定时器检查当前时间差,避免不停重复请求。或者全局 socket 连接。重要的是不要走寻常路,别让下一个接手的人看懂你的代码和思路
phx13ye
2020-04-13 20:58:51 +08:00
@horkooo 233 老接盘侠了
ytmsdy
2020-04-13 21:00:21 +08:00
Django REST framework
imzxk
2020-04-14 08:24:13 +08:00
DRF 、JWT,一把梭
wizardoz
2020-04-14 09:28:28 +08:00
这需要啥思路? django 自带的 session 认证难道不支持吗?
另,楼主需要的是保持状态,jwt 不太符合
Latin
2020-04-14 10:35:20 +08:00
@wizardoz jwt 也可以保持状态啊,自己维护状态就好了 ,不允许重复登录就行。
xpresslink
2020-04-14 12:00:43 +08:00
楼主学习一下 web 开发一些基础知识吧。django 的登录其实就是在客户放了一个名字为 sessionid 的 cookie 存了一个长的字符串。所以你研究一下 django.contrib.auth.login / backend.authenticate
直接把 request.session[SESSION_KEY] 的 SESSION_KEY 字符串推送给前端,写到 sessionid 的 cookie 里面就完成的登录了。
yupozhang
2020-04-18 10:24:51 +08:00
可以参考一下我们开源项目的登录实现思路
前后端分离,前端 react,后端 django,后端 python 验证登录成功后返回一个带有 token 信息的 json 对象给前端,如果用户没有登录或者登录过期自动跳转到登录页面。
项目地址: https://github.com/openspug/spug
欢迎加星。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/662022

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX