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 · 4592 次点击
    这是一个创建于 1445 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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   ·   我们的愿景   ·   实用小工具   ·   5120 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 09:43 · PVG 17:43 · LAX 02:43 · JFK 05:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.