最近开发一个新项目,过安服测试的时候有一些低危的问题,但是觉得又有必要去给他解决。
第一个问题则是,未登录情况下,通过改变地址栏问题能够访问到页面,暴露接口问题,虽然这个一开始就是产品设计考虑不周到,加上开发时间又十分紧迫,所以后期才来补一下这个安全问题。
解决方法当然就是利用理由的beforeEach了。
// 全局路由钩子
router.beforeEach((to, from, next) => {
const pathName = to.name
// 判断该路由是否需要登录权限
if (!['homePage', 'exportPDF'].includes(pathName)) {
if (window.localStorage.getItem('fish_token')) {
next()
} else {
Vue.prototype.$message.error("您还未登录授权,请先登录");
next('/')
return
}
} else {
next() // 确保一定要有next()被调用
return
}
})
这是我的目录结构,基本就是一个index.js的文件,然后就是其他模块
模块文件夹里面的路由js对应的是相应的views里面的文件夹
例如下图
相当于一个文件夹对应自己的路由文件
然后在index.js里面当如,再此之前当前得把moudel里面的路由导出一下
const files = require.context('./', false, /\.js$/)
let routerArr = []
files.keys().forEach(item => {
if (item !== './require.js') {
routerArr = routerArr.concat(files(item).default