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

renvip 15天前 6

前后端分离,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'))

实在是 不知怎么搞了
最新回复 (4)
  • 楼主 renvip 12天前
    引用 2
    简化一下问题:前端伪造 referrer 是行不通的,所以如何让请求后端的 url 返回 401 后响应拦截器重定向单点登录时的 referrer 地址为前端 url,而非后端 url ?
    思路:不用响应拦截器,直接在前端直接校验 token ?
  • xuanbg 12天前
    引用 3
    前端在跳转到 xxx.com/api/login 前,自己保存 xxx.com/api/data 这个 url 。
  • ryanlid 12天前
    引用 4
    跳转到登录页时,把登录前的 url,通过 url 参数传到登录页

    登录完成后,重定向到登录前页面。
  • wuwukai007 12天前
    引用 5
    前端没有路由守卫吗,前端在 cookie 或 localsession 中拿不到 token,就直接跳到登录页
  • 游客
    6
返回