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
renvip
V2EX  ›  Python

请教一个单点登录回调地址问题

  •  
  •   renvip · 2021-01-11 16:11:39 +08:00 · 1724 次点击
    这是一个创建于 1209 天前的主题,其中的信息可能已经有所发展或是发生改变。
    前后端分离,flask+react ,使用域名 xxx.com ,nginx 分发 /api 到后端
    前端 url: xxx.com/
    页面请求 url:xxx.com/api/data,如果 token 失效,后端返回 401
    页面使用响应拦截器,如何状态码为 401,则重定向到 url: xxx.com/api/login
    后端 l 路由 api/login 返回重定向 return redirect(url_for('cas.login'))

    问题:按说应该单点登录成功后,应该回调到 url :xxx.com/ 先在重定向到了 xxx.com/api/data,页面出现一堆 json 数据,
    在 api/login 视图函数内打印 request.referrer,确实是 xxx.com/,我该如何解决问题!

    另:我是在 chrome 中首次打开域名登录和 ctrl+shift+delect 清除 cookies 后,即:不存在 token 时,页面重定向失败,
    那么应该是我的登录验证有问题,我的登录验证中的逻辑为,如果不存在 token,就返回重定向 return flask.redirect(flask.url_for('cas.login'))

    实在是 不知怎么搞了
    5 条回复    2021-01-20 09:57:42 +08:00
    renvip
        1
    renvip  
    OP
       2021-01-11 16:37:26 +08:00
    简化一下问题:前端伪造 referrer 是行不通的,所以如何让请求后端的 url 返回 401 后响应拦截器重定向单点登录时的 referrer 地址为前端 url,而非后端 url ?
    思路:不用响应拦截器,直接在前端直接校验 token ?
    xuanbg
        2
    xuanbg  
       2021-01-11 17:05:50 +08:00
    前端在跳转到 xxx.com/api/login 前,自己保存 xxx.com/api/data 这个 url 。
    ryanlid
        3
    ryanlid  
       2021-01-11 17:34:25 +08:00
    跳转到登录页时,把登录前的 url,通过 url 参数传到登录页

    登录完成后,重定向到登录前页面。
    wuwukai007
        4
    wuwukai007  
       2021-01-11 22:07:15 +08:00
    前端没有路由守卫吗,前端在 cookie 或 localsession 中拿不到 token,就直接跳到登录页
    renvip
        5
    renvip  
    OP
       2021-01-20 09:57:42 +08:00
    @renvip @xuanbg @ryanlid @wuwukai007 感谢,已解决,前端添加了路由守卫,后端向前端设置了 cookies 有效期,后端将首页的请求取消登录验证以皮面前端奇怪的 401 错误导致 cas_client 回调地址有误的问题
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2390 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 11:32 · PVG 19:32 · LAX 04:32 · JFK 07:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.