django 前后端分离,登录验证思路 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
toohardtowork
V2EX    Python

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

  •  
  •   toohardtowork 2020-04-13 17:05:32 +08:00 5381 次点击
    这是一个创建于 2060 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    13 条回复    2020-04-18 10:24:51 +08:00
    JC1027
        1
    JC1027  
       2020-04-13 17:49:20 +08:00
    jwt 吧
    workspace
        2
    workspace  
       2020-04-13 18:33:47 +08:00
    登陆接口逻辑验证成功后 session 设置 is_login 为 True
    下次请求检查 session 里的 is_login 如果为 False 即为匿名(未登录)用户
    Acoolda
        3
    Acoolda  
       2020-04-13 19:19:10 +08:00
    JWT 啊
    qsbaq
        4
    qsbaq  
       2020-04-13 19:29:08 +08:00
    django 不是自带登陆得么?
    @login_required
    了解一下。
    Hstar
        5
    Hstar  
       2020-04-13 19:36:05 +08:00
    这问题问的也太基础了吧,特别是问题二“如何拦截未登录用户不能访问”。
    麻烦去把 dj 官方文档的 Authentication 一章节全看完,比我们在这回帖全面好多。
    horkooo
        6
    horkooo  
       2020-04-13 19:37:56 +08:00 via Android
    token 验证和 token 刷新。前端想用户体验高的话跟后端约定好 token 过期时间,前端定时器检查当前时间差,避免不停重复请求。或者全局 socket 连接。重要的是不要走寻常路,别让下一个接手的人看懂你的代码和思路
    phx13ye
        7
    phx13ye  
       2020-04-13 20:58:51 +08:00 via Android
    @horkooo 233 老接盘侠了
    ytmsdy
        8
    ytmsdy  
       2020-04-13 21:00:21 +08:00
    Django REST framework
    imzxk
        9
    imzxk  
       2020-04-14 08:24:13 +08:00
    DRF 、JWT,一把梭
    wizardoz
        10
    wizardoz  
       2020-04-14 09:28:28 +08:00
    这需要啥思路? django 自带的 session 认证难道不支持吗?
    另,楼主需要的是保持状态,jwt 不太符合
    Latin
        11
    Latin  
       2020-04-14 10:35:20 +08:00
    @wizardoz jwt 也可以保持状态啊,自己维护状态就好了 ,不允许重复登录就行。
    xpresslink
        12
    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
        13
    yupozhang  
       2020-04-18 10:24:51 +08:00
    可以参考一下我们开源项目的登录实现思路
    前后端分离,前端 react,后端 django,后端 python 验证登录成功后返回一个带有 token 信息的 json 对象给前端,如果用户没有登录或者登录过期自动跳转到登录页面。
    项目地址: https://github.com/openspug/spug
    欢迎加星。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3480 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 04:33 PVG 12:33 LAX 20:33 JFK 23:33
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86