From 18697f66e6978aedf387c4c25b489683ad52bc6d Mon Sep 17 00:00:00 2001 From: phoenix110 Date: Tue, 20 Mar 2018 17:04:25 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=88=A4=E6=96=ADtoken?= =?UTF-8?q?=E6=98=AF=E5=90=A6=E5=AD=98=E5=9C=A8=E7=9A=84=E5=86=99=E6=B3=95?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 当dashboard页面也是有权限存在的时候,当点击画面退出按钮后,会导致store.dispatch('GetInfo')再次调用。原因就是严格模式下,if(getToken())不能判断token不存在的情况。需要使用if (typeof (token) === 'undefined')来进行判断。 --- src/permission.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/permission.js b/src/permission.js index 43c1cc59..49a03e27 100644 --- a/src/permission.js +++ b/src/permission.js @@ -15,7 +15,8 @@ function hasPermission(roles, permissionRoles) { const whiteList = ['/login', '/authredirect', '/reset', '/sendpwd']// 不重定向白名单 router.beforeEach((to, from, next) => { NProgress.start() // 开启Progress - if (getToken()) { // 判断是否有token + const token = getToken() + if (typeof (token) === 'undefined') { // 判断是否有token if (to.path === '/login') { next({ path: '/' }) } else { From 7a8304131dcf362765d898e8ec6e1f70711cf301 Mon Sep 17 00:00:00 2001 From: phoenix110 Date: Tue, 20 Mar 2018 17:29:40 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=88=A4=E6=96=ADtoken?= =?UTF-8?q?=E6=98=AF=E5=90=A6=E5=AD=98=E5=9C=A8=E7=9A=84=E5=86=99=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [缺陷描述]: store.dispatch('GetInfo')重复调用。 [重现步骤]: 1.设定dashboard页面也是需要权限才能访问。 2.进入login页面,正常登录系统。 3.点击右上角按钮,正常登出系统。 [期望结果]: 直接跳转到登录页面。 [实际结果]: store.dispatch('GetInfo')被调用,没有直接跳转到登录页面。 [原因定位]: 严格模式下,if(getToken())不能判断token不存在的情况。需要使用if (typeof (token) === 'undefined')来进行判断。 [修复建议]: if(getToken()) 修改为 const token = getToken() if (typeof (token) !== 'undefined') { --- src/permission.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/permission.js b/src/permission.js index e1d1533c..a56c9d89 100644 --- a/src/permission.js +++ b/src/permission.js @@ -19,7 +19,7 @@ const whiteList = ['/login', '/authredirect']// no redirect whitelist router.beforeEach((to, from, next) => { NProgress.start() // 开启Progress const token = getToken() - if (typeof (token) === 'undefined') { // 判断是否有token + if (typeof (token) !== 'undefined') { // 判断是否有token if (to.path === '/login') { next({ path: '/' }) NProgress.done() // if current page is dashboard will not trigger afterEach hook, so manually handle it