登录拦截,登出,路由拦截路由守卫实现思路与逻辑

登录拦截逻辑

第一步:路由拦截
首先在定义路由的时候就需要多添加一个自定义字段requireAuth,用于判断该路由的访问是否需要登录。如果用户已经登录,则顺利进入路由, 否则就进入登录页面。
登录拦截,登出,路由拦截路由守卫实现思路与逻辑_第1张图片
定义完路由后,我们主要是利用vue-router提供的钩子函数beforeEach()对路由进行判断。
登录拦截,登出,路由拦截路由守卫实现思路与逻辑_第2张图片
第二步:拦截器
要想统一处理所有http请求和响应,就得用上 axios 的拦截器。通过配置http response inteceptor,当后端接口返回401 Unauthorized(未授权),让用户重新登录。
登录拦截,登出,路由拦截路由守卫实现思路与逻辑_第3张图片
通过上面这两步,就可以在前端实现登录拦截了。登出功能也就很简单,只需要把当前
token清除
,再跳转到首页即可。
以上是项目中代码的实现思路,简单总结一下
1.通过requireAuth字段来判断该路由是否需要登录权限。需要登录权限,同时通过vuex state获取token是否存在,存在就通过**next()**方法让它继续下一步,不存在token,则跳转到登录页面,进行登录。登录成功后跳转到目标路由,不需要登录权限的则直接跳转不用拦截即可。
2.通过axios的请求拦截来阻止,主要是为了防止本地的token失效的问题,通常的做法是需要结合 http 拦截器 + 后端接口返回的http 状态码来判断,路由的跳转。
一般vue的项目里面都会封装axios的拦截器,我一般都是在src目录下新建一个request文件夹里面放封装后的ajax.js,每个前端的习惯不同,有的叫http.js,接口统一管理我习惯新建一个api的文件夹里面放api.js统一管理项目的接口。

你可能感兴趣的:(登录拦截,登出,路由拦截路由守卫实现思路与逻辑)