在路由守卫前置加免登录接口
router.beforeEach((to, from, next) => {
NProgress.start() // start progress bar
if (to.meta.title) {// 路由发生变化修改页面title
document.title = to.meta.title
}
if (Vue.ls.get(ACCESS_TOKEN)) {
if (to.path === '/login') {
next()
} else (to.query.xxxx) {
ssoLogin(to.query).then(res => { // 通过获取query的token设置免登录
if (res && res.status === 200) {
const headers = res.headers
Vue.ls.set(
//本系统需要的token
ACCESS_TOKEN,
headers['authorization'],
ACCESS_TOKEN_TIME
)
Vue.ls.set(
//子系统免登录token
'access_token',
headers['access-token'],
ACCESS_TOKEN_TIME
)
next({ path: to.path })
}
}).catch(err => {
console.log('err: ', err.response || err)
const message = err.response && err.response.data.detail
vm.$notify({ type: 'warning', message: message || '用户权限验证失败。',duration:2000 })
next({ name: 'accessDenied', query: {message: message || '用户权限验证失败。'} })
})
} else {
if (whiteList.includes(to.name)) {
// 在免登录白名单,直接进入
next()
} else {
next({ path: '/login' })
}
}
next()
})
vue.config.js文件配置代理
devServer: {
proxy: {// 免登录接口跨域
'/ssoLogin': {
//注:nginx需配置来解决404 ---> proxy_pass http://1xx.x0.x0.xxx:8088/xx/xxx/xxxx; IP后面需跟target同步
'target': 'http://1xx.xx.xx.xx:8081/xxx/xxx/xxxx, // oa访问我们免登录接口地址,将IP和端口改为访问后端的IP端口
'secure': false, // false为http访问,true为https访问
'changeOrigin': true, // 跨域访问设置,true代表跨域
'pathRewrite': { // 路径改写规则
'^/ssoLogin': ''
}
},
}
}
服务器nginx配置
server {
listen 8081;
server_name xxx.x.xxx.xx;
location /ssoLogin {
#proxy_pass IP ������� vue target����ͬ��
proxy_pass http:http://1xx.x0.x0.xxx:8088/xx/xxx/xxxx;
}
先记录一下,nginx配置不太懂