javascript - 关于前后分离页面登录拦截问题
问题描述
项目是前后分离,后端只给前端接口,每一个接口带token,现在有一些需要登录才能进去的页面,前端如何拦截。比如:由A页面 通过A标签跳转到 B页面(B页面需要登录才能进去)。我现在做法是进到B页面,发送ajax请求,后台返回状态才做跳转到登录页面,现在问题是我已经进到B页面才做判断很不合理。
问题解答
回答1:可以考虑点击a标签的时候先发ajax请求再决定往哪跳转?
回答2:可以自己封装一个ajax请求,单独判断登录状态,未登录跳转登录,登录直接返回数据
回答3:写一个公共的js 在里面写页面加载函数 你需要登录授权才能访问的页面就引用 然后在里面写逻辑判断
回答4:前端不做拦截,服务器端做拦截。前端拦截的话,只能在B页面做,你考虑一下拼写url进入呢?B页面访问接口尝试拿userinfo,拿到就是登陆了,没拿到就没登录。
回答5:token一般都有过期时间,用localstorage保存token的时候带上一个过期时间,页面跳转的时候先判断token是否过期,过期了就跳登录页,没有就继续。如果是单页的应用这个就很好解决,如果不是单页的话,就写到一个公共js里。
回答6:肯定会由用户某个交互动作 导致 跳转到第二个页面的, 再跳转之前 进行登录验证, 没有登录就让其登录(或者注册), 登录(注册)肯定要 封装起来的, 封装的时候 预留 登录后的 成功回调和 注册成功 后的回调, 在回调函数中再做跳转 到B页面
回答7:这种两种方法解决:1、服务端做验证 既然是要登录才能进去的页面 必然会涉及到用户权限 在B页面发的ajax请求中有token 后端做token过期的验证 判断是否有权限 报错统一返回 前端写一个公共方法验证没有权限的错误信息 (这种方式要做到响应的接口上 比较保险)2、前端在每个页面写个看门狗js,判断存储用户信息中的过期时间 在做跳转。
我看楼主的需求是想在点击的时候做判断是否跳转 可以把a标签换成点击函数 在函数中判断 使用window.location.href = url 的方式跳转页面
回答8:lz前端框架用的什么? 我知道vue_router中有钩子函数可以实现, 在router.beforeEach的时候判断是否登录,如果没有登录就去登录,如果登录就直接next()
相关文章:
1. python相关问题求解决,有偿2. python - 请问用cxfreeze打包的可执行程序能反编译出源码么?3. python - 用__call__ 实现装饰器功能4. javascript - input输入框触发change事件后,外部元素会被选中5. javascript - 在sublime中如何给.vue文件注释?6. javascript - 把字符串日期转换成一般时间格式后,发现小于10的数字不会自动添加0在前面,如下7. javascript - vue2.0中router.repalce跟router.push有什么区别,二者的应用场景是会有怎样的区别?8. javascript - prismplayer播放器全屏问题9. javascript - js判断一个数组是否重复10. javascript - 这种上传图片预览怎么做?