vue前端登录
登陆流程
1、用户登录从后台获取 token,菜单数据
2、将token和菜单数据存入sessionStorage,token用来校验用户是否已经登录
2、将返回的菜单数据前端生成对应菜单列表
3、处理每个子菜单对应的页面和子页面权限控制
其中后台会判断用户操作是否传过来的会话ID是不是同一个,若不是,说明会话过期并且会报错,前端返回到登录页面
这里校验session过期可以有两种方式,一是每一次访问接口将token带上,放在requestHeader里面,后台会校验token;
二是用户登录后后台直接在浏览器中生成JSESSIONID,之后用户每次请求都会带上它如下图;

这次登录用的是第二种方式,前台需要设置在请求配置中设置 config.withCredentials = true,相应后台也需要设置响应头
api.interceptors.request.use(config => {
loadingInstance = Loading.service(loadingOptions)
setTimeout(() => {
loadingInstance.close()
}, 30000)
config.withCredentials = true
return config
})

子页面权限
关于子页面权限,用户登录后台返回的菜单数据不包括每个菜单的子页面,也就是说访问一个列表页面,列表中有个按钮详情,点击进去的详情页面后台并没有返回,此时稍微设置一下即可
在每个子页面的路由信息中加上 一条能识别是属于哪个菜单的
{
path: '/business-query',
name: '业务查询',
component: BusinessQuery
},
{
path: '/business-query-detail',
meta:{parentPath:'/business-query'},//对应的父页面路径
name: '业务查询明细',
component: BusinessQueryDetail
},
然后,路由全局钩子中判断路由跳转
route.beforeEach((to, from, next) => {
if(sessionStorage.token){
if(to.fullPath=='/Login'){
next()
}else{
console.log(to)
if(JSON.parse(sessionStorage.pathList).indexOf(to.path)==-1 && JSON.parse(sessionStorage.pathList).indexOf(to.meta.parentPath)==-1){
return next('/error401')
}else{
next()
}
}
}else{
if(to.fullPath=='/Login'){
return next()
}else{
next('/Login')
}
}
})
至于按钮权限,该系统中有角色管理,可以修改某个角色的具体权限,所有按钮权限不能按照角色来判定了,只能是傻傻的让后台记录所有按钮ID,然后用户登陆后返回可访问的按钮,
前端会有一份数据对应系统每个按钮ID,根据返回的ID做筛选,当加载某个页面时,展示或者隐藏对应按钮
vue前端登录的更多相关文章
- 循序渐进VUE+Element 前端应用开发(12)--- 整合ABP框架的前端登录处理
VUE+Element 前端是一个纯粹的前端处理,前面介绍了很多都是Vue+Element开发的基础,从本章随笔开始,就需要进入深水区了,需要结合ABP框架使用(如果不知道,请自行补习一下我的随笔:A ...
- vue 前端框架 (三)
VUE 生命周期 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> < ...
- vue前端实战注意事项
1. vue前端实战注意事项 1.1. 预备 1.1.1. Eslint 这是个语法检查工具,我用webstorm作为开发的ide,这个语法检查还是太严格了,一个空格啥的都会报错,对新手来讲还是建议关 ...
- 手把手教你如何构建Vue前端组件库
在前端开发中可能会遇到将相同的功能模板集合成一个组件,供他人调用,这样可以减少重复造轮子,也可以节约人力.财力,更能够提高代码的可维护度:下面将通过详细的步骤教你如何构建一个Vue前端组件. 1.在本 ...
- VUE中登录密码显示与隐藏的最简设计——基于iview
目录 VUE中登录密码显示与隐藏的最简设计--基于iview 1.背景 2.实现最终效果 2.1 隐藏密码 2.2 显示密码 3.实现思路 3.1 v-if判断当前密码显示状态 3.2 密码隐藏状态 ...
- 循序渐进VUE+Element 前端应用开发(19)--- 后端查询接口和Vue前端的整合
循序渐进VUE+Element 前端应用开发的系列文章中,前面介绍了系统各个功能的处理实现,本篇随笔从一个主线上介绍前后端开发的整合,让我们从ABP框架后端的查询接口的处理,前端API接口调用的封装, ...
- 一步步使用SpringBoot结合Vue实现登录和用户管理功能
前后端分离开发是当今开发的主流.本篇文章从零开始,一步步使用SpringBoot结合Vue来实现日常开发中最常见的登录功能,以及登录之后对用户的管理功能.通过这个例子,可以快速入门SpringBoot ...
- Vue 前端权限控制的优化改进版
1.前言 之前<Vue前端访问控制方案 >一文中提出,使用class="permissions"结合元素id来标识权限控制相关的dom元素,并通过公共方法check ...
- vue 前端框架 目录
vue 前端框架 目录 vue-目录 ES6基础语法 vue基础语法 Vue.js的组件化思想 —上 Vue.js的组件化思想 —下 Vue + Vue-Router结合开发 SublimeSer ...
随机推荐
- 推荐几位jenkins发布war包和jar包大佬的博客
jenkins部署tomcat的war包和jar包 https://blog.csdn.net/liuxiaoming1109/article/details/89311696
- JQuery中易混淆的概念
append(): 向每个匹配的元素内部追加内容. <p>I would like to say: </p> $("p").append("< ...
- java集合 list与Set、Map区别
1.List,Set都是继承自Collection接口,Map则不是. 2.List特点:元素有放入顺序,元素可重复 ,Set特点:元素无放入顺序,元素不可重复,重复元素会覆盖掉 ,(注意:元素虽 ...
- appium ios真机自动化环境搭建&运行(送源码)
appium ios真机自动化环境搭建&运行(送源码) 原创: f i n 测试开发社区 6天前 Appium测试环境的搭建相对比较烦琐,不少初学者在此走过不少弯路 首先是熟悉Mac的使用 ...
- Linux命令alias - 设置命令的别名
用途说明设置命令的别名.在linux系统中如果命令太长又不符合用户的习惯,那么我们可以为它指定一个别名.虽然可以为命令建立“链接”解决长文件名的问题,但对于带命令行参数的命令,链接就无能为力了.而指定 ...
- [人工智能]NumPy基础
理解NumPy 本文主要介绍NumPy的基础知识,NumPy是一个功能强大的Python库,允许更高级的数据操作和数学计算. 什么是NumPy NumPy,来源自两个单词:Numerical和Pyth ...
- 用Python搭建简单的HTTP服务 · Zhangxu's Blog
分享一个快速用Python搭建简单的HTTP服务的方法. 平时我们可能有需要,传输某个文件到手机,或者工作中某台服务器的电脑. 假如这个手机是个测试手机/服务器,并没有微信QQ之类的软件,而且你也不想 ...
- Vue内置组件keep-alive的使用
本文主要介绍Vue内置组件keep-alive的使用. Vue内置组件keep-alive的使用 keep-alive接收三个props:●include - 字符串或正则表达式.只有名称匹配的组件会 ...
- 理解 LinkedList
java -version :jdk 1.8.0_191 构造 类内参数,方法 实现 基于双向链表实现. 插入时间复杂度 O(1) 查找时间复杂度 O(n) 删除时间复杂度 O(1) 修改时间复杂度 ...
- C++扬帆远航——1
问题及代码: /* * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:test.cpp * 作者:常轩 * 完成日期:2 ...