PanJiaChen / vue-element-admin

:tada: A magical vue admin https://panjiachen.github.io/vue-element-admin
MIT License
87.82k stars 30.44k forks source link

其他平台共享token跳转免登录 #2706

Open hanxiaosss opened 4 years ago

hanxiaosss commented 4 years ago

由于后续接口请求头都要带上token,我是在permission路由拦截里面取到了token,怎么修改vueX中存的token? 谢谢 `` router.beforeEach(async(to, from, next) => { console.log(to, 'TO') console.log(to.path, 'TOPATH') console.log(from, 'form') // start progress bar NProgress.start()

// set page title document.title = getPageTitle(to.meta.title) // if(to.query.code){ // store.getter // } // determine whether the user has logged in const hasToken = getToken() || to.query.code console.log(hasToken, 'hastoken') if (hasToken) { if (to.path === '/login') { // if is logged in, redirect to the home page next({ path: '/' }) NProgress.done() } else { const hasGetUserInfo = store.getters.name if (hasGetUserInfo) { next() } else { try { // get user info await store.dispatch('user/getInfo') const accessRoutes = await store.dispatch('permission/getRolesMenu') router.addRoutes(accessRoutes) next({ ...to, replace: true }) } catch (error) { // remove token and go to login page to re-login await store.dispatch('user/resetToken') Message.error(error.message || 'Has Error') next(/login?redirect=${to.path}&&code=${hasToken}) NProgress.done() } } } }``

berber1016 commented 4 years ago

没这么做过 但是拦截到了 就可以存 cookies.set()试试?

berber1016 commented 4 years ago

具体 可以看一下 utils下的auth.js 里有存储token的办法

yangziran commented 4 years ago

我这边在统一认证平台重定向过来后会带上token的参数,我的实现方式如下: 在permission.js文件的const hasToken = getToken()前面添加以下代码 // determine whether the user has logged in const token = getQueryParam('token') if (token) { setToken(token) location.href = process.env.VUE_APP_BASE_URL }

在@/utils/auth添加方法: export function getQueryParam(name) { var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)') var r = window.location.search.substr(1).match(reg) if (r) { return decodeURIComponent(r[2]) } return null }