在Vue项目中,你可以使用路由守卫来实现访问白名单功能,即在用户访问某些指定路由页面时,如果用户未登录,则自动跳转到登录页面,或者直接允许访问。
以下是一个简单的例子,使用Vue Router实现访问白名单:
import Vue from 'vue'
import Router from 'vue-router'
Vue.use(Router)
const router = new Router({
routes: [
{
path: '/',
name: 'Home',
component: Home
},
{
path: '/login',
name: 'Login',
component: Login
},
// 其他路由...
]
})
// 白名单路由数组
const whiteList = ['/', '/login']
// 全局前置守卫
router.beforeEach((to, from, next) => {
// 判断用户是否登录(这里假设有一个全局状态userInfo)
const userInfo = Vue.prototype.$userInfo || {}
if (!userInfo.isLogin && whiteList.indexOf(to.path) === -1) {
// 如果用户未登录且当前路由不在白名单中,则重定向到登录页
next('/login')
} else {
// 否则,直接进入该路由
next()
}
})
export default router
在这个例子中,我们定义了一个名为whiteList
的数组,包含了允许免登录访问的路由路径。然后,我们使用了Vue Router的全局前置守卫beforeEach
来判断用户是否需要登录。如果用户未登录且当前路由不在白名单中,则自动重定向到登录页面。如果用户已登录或者当前路由在白名单中,则正常进入该页面。
你需要根据自己的项目实际情况,将userInfo.isLogin
替换为你的用户登录状态判断逻辑,并确保Vue.prototype.$userInfo
是一个可访问的用户信息对象。