Heim > Fragen und Antworten > Hauptteil
Das Projekt ist von vorne nach hinten getrennt und jede Schnittstelle verfügt über ein Token. 前端如何拦截
。比如:由A页面
通过A标签跳转到 B页面
(B页面需要登录才能进去)。我现在做法是进到B页面,发送ajax请求
Der Hintergrund gibt den Status zurück Die Anmeldeseite ist jetzt das Problem, dass ich B eingegeben habe. Es ist unangemessen, nur aufgrund der Seite ein Urteil zu fällen.
为情所困2017-06-24 09:46:13
前端不做拦截,服务器端做拦截。前端拦截的话,只能在B页面做,你考虑一下拼写url进入呢?B页面访问接口尝试拿userinfo,拿到就是登陆了,没拿到就没登录。
ringa_lee2017-06-24 09:46:13
token一般都有过期时间,用localstorage保存token的时候带上一个过期时间,页面跳转的时候先判断token
是否过期,过期了就跳登录页,没有就继续。
如果是单页的应用这个就很好解决,如果不是单页的话,就写到一个公共js里。
阿神2017-06-24 09:46:13
肯定会由用户某个交互动作 导致 跳转到第二个页面的, 再跳转之前 进行登录验证, 没有登录就让其登录(或者注册), 登录(注册)肯定要 封装起来的, 封装的时候 预留 登录后的 成功回调和 注册成功 后的回调, 在回调函数中再做跳转 到B页面
迷茫2017-06-24 09:46:13
这种两种方法解决:
1、服务端做验证 既然是要登录才能进去的页面 必然会涉及到用户权限 在B页面发的ajax请求中有token 后端做token过期的验证 判断是否有权限 报错统一返回 前端写一个公共方法验证没有权限的错误信息 (这种方式要做到响应的接口上 比较保险)
2、前端在每个页面写个看门狗js,判断存储用户信息中的过期时间 在做跳转。
我看楼主的需求是想在点击的时候做判断是否跳转 可以把a标签换成点击函数 在函数中判断 使用window.location.href = url 的方式跳转页面
三叔2017-06-24 09:46:13
lz前端框架用的什么?
我知道vue_router中有钩子函数可以实现, 在router.beforeEach的时候判断是否登录,如果没有登录就去登录,如果登录就直接next()