权限是对特定资源的访问许可,所谓权限控制,也就是确保用户只能访问到被分配的资源。请求触发的方式页面加载触发
请求发起的方式有两种,1、页面上的按钮点击触发;2、页面加载触发
总的来说,所有的请求发起都触发自前端路由或视图。
路由控制的思路有两种,一种是初始化即挂载全部路由,每次路由跳转前做校验;另一种是只挂载用户拥有的路由,相当于从源头上做了控制。
1、接口权限目前一般采用jwt的形式来验证,没有通过的话一般返回401,跳转到登录页面重新进行登录。登录完拿到token,将token存起来,通过axios请求拦截器进行拦截,每次请求的时候头部携带token
2、路由权限控制:初始化即挂载全部路由,并且在路由上标记相应的权限信息,每次路由跳转前做校验;
这种方式存在以下四种缺点:
-
加载所有的路由,如果路由很多,而用户并不是所有的路由都有权限访问,对性能会有影响。
-
全局路由守卫里,每次路由跳转都要做权限判断。
-
菜单信息写死在前端,要改个显示文字或权限信息,需要重新编译
-
菜单跟路由耦合在一起,定义路由的时候还有添加菜单显示标题,图标之类的信息,而且路由不一定作为菜单显示,还要多加字段进行标识
3、按钮权限也可以用v-if判断
但是如果页面过多,每个页面页面都要获取用户权限role和路由表里的meta.btnPermissions,然后再做判断。