用户登录适配权限目录问题,登陆后已适配,一刷新 vue router就初始化为以前的了 已解决
正在显示
6 个修改的文件
包含
100 行增加
和
31 行删除
| @@ -17,7 +17,6 @@ export const requestLogin = params => { | @@ -17,7 +17,6 @@ export const requestLogin = params => { | ||
| 17 | for (let it in data) { | 17 | for (let it in data) { |
| 18 | ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&' | 18 | ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&' |
| 19 | } | 19 | } |
| 20 | - console.log(ret) | ||
| 21 | return ret | 20 | return ret |
| 22 | }], | 21 | }], |
| 23 | headers: { | 22 | headers: { |
| @@ -28,15 +28,15 @@ Vue.use(VueRouter) | @@ -28,15 +28,15 @@ Vue.use(VueRouter) | ||
| 28 | Vue.use(Vuex) | 28 | Vue.use(Vuex) |
| 29 | 29 | ||
| 30 | //NProgress.configure({ showSpinner: false }); | 30 | //NProgress.configure({ showSpinner: false }); |
| 31 | - | 31 | +console.log("mainjs:"); |
| 32 | +console.log(rout.routes); | ||
| 32 | const router = new VueRouter({ | 33 | const router = new VueRouter({ |
| 33 | routes:rout.routes | 34 | routes:rout.routes |
| 34 | -}) | ||
| 35 | -//判断本地存储的用户栏目列表是否存在,如果存在则加载路由 | ||
| 36 | -if(sessionStorage.getItem('menu')){ | ||
| 37 | - rout.setUserMenus(JSON.parse(sessionStorage.getItem('menu'))); | ||
| 38 | - router.options.routes = rout.routes | ||
| 39 | -} | 35 | +}); |
| 36 | + | ||
| 37 | +//本地存储系统初始化的router路由,用来处理用户退出后,把路由数据初始化 | ||
| 38 | +sessionStorage.setItem('sysMenu', JSON.stringify(rout.routes)); | ||
| 39 | + | ||
| 40 | router.beforeEach((to, from, next) => { | 40 | router.beforeEach((to, from, next) => { |
| 41 | //NProgress.start(); | 41 | //NProgress.start(); |
| 42 | if (to.path == '/login') { | 42 | if (to.path == '/login') { |
| @@ -84,11 +84,37 @@ let routes = [ | @@ -84,11 +84,37 @@ let routes = [ | ||
| 84 | redirect: { path: '/404' } | 84 | redirect: { path: '/404' } |
| 85 | } | 85 | } |
| 86 | ]; | 86 | ]; |
| 87 | - | 87 | +let initRouters = routes.concat(); |
| 88 | let setUserMenus = function (list) { | 88 | let setUserMenus = function (list) { |
| 89 | routes = list; | 89 | routes = list; |
| 90 | - let s= 1; | 90 | +} |
| 91 | +/** | ||
| 92 | + * 处理登陆后的账号对应的菜单 | ||
| 93 | + * @param menuList | ||
| 94 | + */ | ||
| 95 | +let handleMenuList = function (router,menu) { | ||
| 96 | + var _self = this; | ||
| 97 | + var routerName = ""; | ||
| 98 | + router.forEach(function (v_router) { | ||
| 99 | + routerName = v_router.name; | ||
| 100 | + menu.forEach(function (v_menu) { | ||
| 101 | + //查找返回的目录列表是否包含路由名称,有就返回匹配到的元素,没有就移除 | ||
| 102 | + let result = menu.find(item => { | ||
| 103 | + return item.name === routerName; | ||
| 104 | + }); | ||
| 105 | + | ||
| 106 | + //匹配到继续判断是否子元素,有子元素继续递归 | ||
| 107 | + if (result) { | ||
| 108 | + if(v_router.children) { | ||
| 109 | + _self.handleMenuList(v_router.children,result.children); | ||
| 110 | + } | ||
| 111 | + //没有则可以移除 | ||
| 112 | + }else { | ||
| 113 | + router.splice(router.findIndex(itm => itm.name === routerName ),1); | ||
| 114 | + } | ||
| 115 | + }) | ||
| 116 | + }); | ||
| 91 | } | 117 | } |
| 92 | export default { | 118 | export default { |
| 93 | - routes,setUserMenus | 119 | + routes,setUserMenus,handleMenuList,initRouters |
| 94 | }; | 120 | }; |
| @@ -71,7 +71,8 @@ | @@ -71,7 +71,8 @@ | ||
| 71 | </template> | 71 | </template> |
| 72 | 72 | ||
| 73 | <script> | 73 | <script> |
| 74 | - export default { | 74 | + import rt from '../routes' |
| 75 | + export default { | ||
| 75 | data() { | 76 | data() { |
| 76 | return { | 77 | return { |
| 77 | sysName:'流浪地球管理系统', | 78 | sysName:'流浪地球管理系统', |
| @@ -109,6 +110,13 @@ | @@ -109,6 +110,13 @@ | ||
| 109 | //type: 'warning' | 110 | //type: 'warning' |
| 110 | }).then(() => { | 111 | }).then(() => { |
| 111 | sessionStorage.removeItem('user'); | 112 | sessionStorage.removeItem('user'); |
| 113 | + sessionStorage.removeItem('menu'); | ||
| 114 | + | ||
| 115 | + //退出后初始化原来的路由 | ||
| 116 | + let sysRoutes = JSON.parse(sessionStorage.getItem('sysMenu')); | ||
| 117 | + console.log(sysRoutes); | ||
| 118 | + _this.$router.options.routes = sysRoutes; | ||
| 119 | + | ||
| 112 | _this.$router.push('/login'); | 120 | _this.$router.push('/login'); |
| 113 | }).catch(() => { | 121 | }).catch(() => { |
| 114 | 122 | ||
| @@ -125,13 +133,22 @@ | @@ -125,13 +133,22 @@ | ||
| 125 | } | 133 | } |
| 126 | }, | 134 | }, |
| 127 | mounted() { | 135 | mounted() { |
| 136 | + var _this = this; | ||
| 128 | var user = sessionStorage.getItem('user'); | 137 | var user = sessionStorage.getItem('user'); |
| 129 | if (user) { | 138 | if (user) { |
| 130 | user = JSON.parse(user); | 139 | user = JSON.parse(user); |
| 131 | this.sysUserName = user.username || ''; | 140 | this.sysUserName = user.username || ''; |
| 132 | this.sysUserAvatar = user.userface || '/static/images/faceDefault.jpg'; | 141 | this.sysUserAvatar = user.userface || '/static/images/faceDefault.jpg'; |
| 133 | } | 142 | } |
| 134 | - | 143 | + //操作路由,判断本地存储的用户栏目列表是否存在,如果存在则加载路由 |
| 144 | + var userRouters = sessionStorage.getItem('menu'); | ||
| 145 | + if (userRouters) { | ||
| 146 | + userRouters = JSON.parse(userRouters); | ||
| 147 | + let sysMenus = _this.$router.options.routes; | ||
| 148 | + rt.handleMenuList(sysMenus,userRouters); | ||
| 149 | + console.log("home:"); | ||
| 150 | + console.log(_this.$router.options.routes); | ||
| 151 | + } | ||
| 135 | } | 152 | } |
| 136 | } | 153 | } |
| 137 | 154 |
| @@ -33,7 +33,7 @@ | @@ -33,7 +33,7 @@ | ||
| 33 | 33 | ||
| 34 | <script> | 34 | <script> |
| 35 | import { requestLogin,getuserMenus } from '../api/api'; | 35 | import { requestLogin,getuserMenus } from '../api/api'; |
| 36 | - import routes from '../routes' | 36 | + import rt from '../routes' |
| 37 | //import NProgress from 'nprogress' | 37 | //import NProgress from 'nprogress' |
| 38 | export default { | 38 | export default { |
| 39 | data() { | 39 | data() { |
| @@ -66,11 +66,7 @@ | @@ -66,11 +66,7 @@ | ||
| 66 | handleReset2() { | 66 | handleReset2() { |
| 67 | this.$refs.ruleForm2.resetFields(); | 67 | this.$refs.ruleForm2.resetFields(); |
| 68 | }, | 68 | }, |
| 69 | - /** | ||
| 70 | - * 处理登陆后的账号对应的菜单 | ||
| 71 | - * @param menuList | ||
| 72 | - */ | ||
| 73 | - handleMenuList: function (router,menu) { | 69 | + handleMenuList : function (router,menu) { |
| 74 | var _self = this; | 70 | var _self = this; |
| 75 | var routerName = ""; | 71 | var routerName = ""; |
| 76 | router.forEach(function (v_router) { | 72 | router.forEach(function (v_router) { |
| @@ -84,14 +80,18 @@ | @@ -84,14 +80,18 @@ | ||
| 84 | //匹配到继续判断是否子元素,有子元素继续递归 | 80 | //匹配到继续判断是否子元素,有子元素继续递归 |
| 85 | if (result) { | 81 | if (result) { |
| 86 | if(v_router.children) { | 82 | if(v_router.children) { |
| 87 | - _self.handleMenuList(v_router.children,v_menu.children); | 83 | + _self.handleMenuList(v_router.children,result.children); |
| 88 | } | 84 | } |
| 89 | //没有则可以移除 | 85 | //没有则可以移除 |
| 90 | }else { | 86 | }else { |
| 91 | router.splice(router.findIndex(itm => itm.name === routerName ),1); | 87 | router.splice(router.findIndex(itm => itm.name === routerName ),1); |
| 92 | } | 88 | } |
| 93 | }) | 89 | }) |
| 94 | - }) | 90 | + }); |
| 91 | + console.log("longined router:"); | ||
| 92 | + console.log(_self.$router.options.routes); | ||
| 93 | + //本地存储用户目录 ,防刷新目录丢失用 | ||
| 94 | + sessionStorage.setItem('menu', JSON.stringify(_self.$router.options.routes)); | ||
| 95 | }, | 95 | }, |
| 96 | handleSubmit2: function (ev) { | 96 | handleSubmit2: function (ev) { |
| 97 | var _this = this; | 97 | var _this = this; |
| @@ -105,8 +105,10 @@ | @@ -105,8 +105,10 @@ | ||
| 105 | this.logining = false; | 105 | this.logining = false; |
| 106 | //NProgress.done(); | 106 | //NProgress.done(); |
| 107 | let status = res.status; | 107 | let status = res.status; |
| 108 | - let user = res.data.principal; | ||
| 109 | - let loginSuccess = res.data.authenticated; | 108 | + let authentication = res.data.authentication; |
| 109 | + let user = authentication.principal; | ||
| 110 | + let loginSuccess = authentication.authenticated; | ||
| 111 | + let loginUserMenus = res.data.loginUserMenus; | ||
| 110 | if (status !== 200) { | 112 | if (status !== 200) { |
| 111 | let msg = "登录错误"; | 113 | let msg = "登录错误"; |
| 112 | this.$message({ | 114 | this.$message({ |
| @@ -115,14 +117,20 @@ | @@ -115,14 +117,20 @@ | ||
| 115 | }); | 117 | }); |
| 116 | } else if (loginSuccess) { | 118 | } else if (loginSuccess) { |
| 117 | sessionStorage.setItem('user', JSON.stringify(user)); | 119 | sessionStorage.setItem('user', JSON.stringify(user)); |
| 118 | - getuserMenus('').then(res => { | ||
| 119 | - if(res && res.status===200){ | ||
| 120 | - _this.userMenus = res.data.list; | ||
| 121 | - this.handleMenuList(routes.routes,_this.userMenus); | ||
| 122 | - //本地存储用户目录 ,防刷新目录丢失用 | ||
| 123 | - sessionStorage.setItem('menu', JSON.stringify(routes.routes)); | ||
| 124 | - } | ||
| 125 | - }); | 120 | + //处理用户menu |
| 121 | + _this.userMenus = loginUserMenus.list; | ||
| 122 | + console.log("userMenus:"); | ||
| 123 | + console.log(_this.userMenus); | ||
| 124 | + console.log(loginUserMenus.list); | ||
| 125 | + let sysMenus = _this.$router.options.routes; | ||
| 126 | + | ||
| 127 | + console.log("sysMenus:"); | ||
| 128 | + console.log(sysMenus); | ||
| 129 | + | ||
| 130 | + _this.handleMenuList(sysMenus,_this.userMenus); | ||
| 131 | + | ||
| 132 | + console.log("user:"); | ||
| 133 | + console.log(_this.$router.options.routes); | ||
| 126 | this.$router.push({path: '/main'}); | 134 | this.$router.push({path: '/main'}); |
| 127 | } | 135 | } |
| 128 | }).catch(error => { | 136 | }).catch(error => { |
| @@ -5,7 +5,26 @@ | @@ -5,7 +5,26 @@ | ||
| 5 | </template> | 5 | </template> |
| 6 | 6 | ||
| 7 | <script> | 7 | <script> |
| 8 | + import rt from '../routes' | ||
| 8 | export default { | 9 | export default { |
| 10 | + mounted() { | ||
| 11 | + var _this = this; | ||
| 12 | + var user = sessionStorage.getItem('user'); | ||
| 13 | + if (user) { | ||
| 14 | + user = JSON.parse(user); | ||
| 15 | + this.sysUserName = user.username || ''; | ||
| 16 | + this.sysUserAvatar = user.userface || '/static/images/faceDefault.jpg'; | ||
| 17 | + } | ||
| 18 | + //操作路由,判断本地存储的用户栏目列表是否存在,如果存在则加载路由 | ||
| 19 | + var userRouters = sessionStorage.getItem('menu'); | ||
| 20 | + if (userRouters) { | ||
| 21 | + userRouters = JSON.parse(userRouters); | ||
| 22 | + let sysMenus = _this.$router.options.routes; | ||
| 23 | + rt.handleMenuList(sysMenus,userRouters); | ||
| 24 | + console.log("main:"); | ||
| 25 | + console.log(_this.$router.options.routes); | ||
| 26 | + } | ||
| 27 | + } | ||
| 9 | } | 28 | } |
| 10 | 29 | ||
| 11 | </script> | 30 | </script> |
-
请 注册 或 登录 后发表评论