前端路由权限控制怎么做才安全?
我在用 Vue 做后台管理系统,现在想根据用户角色动态控制能访问的页面。目前是登录后把菜单和路由权限存在 Vuex 里,然后在 router.beforeEach 里判断:
router.beforeEach((to, from, next) => {
if (!store.state.userRoutes.includes(to.name)) {
next('/403')
} else {
next()
}
})
但同事说这样不安全,因为前端路由都能被绕过,只要知道路径就能直接输入地址访问。那我是不是还得在每个页面组件里再加一层判断?或者有更靠谱的做法?
1. 前端保持现有的路由守卫检查
2. 后端接口要加权限校验,比如:
3. 每个页面的初始化数据请求也要做权限校验,没权限的直接401
这样就算绕过前端路由,没权限的接口也拿不到数据,页面照样废。搞了十几年后台系统都这么干的,靠谱。