We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
在如今前端框架发展的今天,单页面应用越来越比较常见了,随之而来也将面对权限的管理。针对VUE主要说说以下方面:
VUE
接口的权限一般和UI库关系不是很大,这里用axios举例来说明。常用在管理后台这些需要获取用户登录信息的接口。这里使用axios的拦截器就能很方便的实现。
axios
举个小例子:后台好多接口发ajax请求获取数据的时候后端(前端判断用户是否登录的手段比较少,cookie?)都会需要获取用户是否登录,并在登录的情况反馈到前端,前端跳转到登录页面。这个就可以使用这个拦截器来实现。
ajax
cookie
在请求或响应被 then 或 catch 处理前拦截它们。
then
catch
// 添加响应拦截器 axios.interceptors.response.use(response => { // 对响应数据做点什么 return response; }, error => { // 对响应错误做点什么 return Promise.reject(error); });
// 添加请求拦截器 axios.interceptors.request.use(config =>{ // 在发送请求之前做些什么 return config; }, error => { // 对请求错误做些什么 return Promise.reject(error); });
页面及权限主要靠vue-router来实现。基本思路是为全局注册一个“前置守卫”钩子函数router.beforeEach。
vue-router
router.beforeEach
const router = new VueRouter({ ... }) router.beforeEach((to, from, next) => { // 这里检查权限并进行跳转 next() })
每个守卫方法接收三个参数:
Route
Function:
resolve
next
confirmed
URL
from
next('/')
next({ path: '/' }):
replace: true、name: 'home'
router-link
to prop
router.push
Error
router.onError()
确保要调用 next 方法,否则钩子就不会被 resolved。
resolved
前端单页面权限控制在不同的框架中实现思路基本一致。感兴趣的同学可以去研究一下。
The text was updated successfully, but these errors were encountered:
No branches or pull requests
接口级权限
接口的权限一般和UI库关系不是很大,这里用
axios
举例来说明。常用在管理后台这些需要获取用户登录信息的接口。这里使用axios
的拦截器就能很方便的实现。举个小例子:后台好多接口发
ajax
请求获取数据的时候后端(前端判断用户是否登录的手段比较少,cookie
?)都会需要获取用户是否登录,并在登录的情况反馈到前端,前端跳转到登录页面。这个就可以使用这个拦截器来实现。拦截器
在请求或响应被
then
或catch
处理前拦截它们。页面级权限
页面及权限主要靠
vue-router
来实现。基本思路是为全局注册一个“前置守卫”钩子函数router.beforeEach
。每个守卫方法接收三个参数:
Route
即将要进入的目标Route
当前导航正要离开的路由Function:
一定要调用该方法来resolve
这个钩子。执行效果依赖next
方法的调用参数。confirmed
(确认的)。URL
改变了(可能是用户手动或者浏览器后退按钮),那么URL
地址会重置到from
路由对应的地址。next('/')
或者next({ path: '/' }):
跳转到一个不同的地址。当前的导航被中断,然后进行一个新的导航。你可以向 next 传递任意位置对象,且允许设置诸如replace: true、name: 'home'
之类的选项以及任何用在router-link
的to prop
或router.push
中的选项。next
的参数是一个Error
实例,则导航会被终止且该错误会被传递给router.onError()
注册过的回调。确保要调用
next
方法,否则钩子就不会被resolved
。结束语
前端单页面权限控制在不同的框架中实现思路基本一致。感兴趣的同学可以去研究一下。
The text was updated successfully, but these errors were encountered: