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 ...
随机推荐
- unittest(22)- p2p项目实战(8)-test_class_auto_incre
# 8.test_class_auto_incre # 使用ddt import requests import unittest from p2p_project_7.tools.http_requ ...
- 在C代码调用C++代码
由于历史原因,以及不同开发人员的技术偏好,C语言和C++语言都有一些独有的非常有价值的项目,因而两种语言的互操作,充分利用前人造的轮子是一件非常有价值的事情. C++代码调用C代码很简单,只要分别在包 ...
- Mysql SQL Mode简介
MySQL服务器能够工作在不同的SQL模式下,并能针对不同的客户端以不同的方式应用这些模式.这样,应用程序就能对服务器操作进行量身定制以满足自己的需求.这类模式定义了MySQL应支持的SQL语法,以及 ...
- 安卓权威编程指南-笔记(第27章 broadcast intent)
本章需求:首先,让应用轮询新结果并在有所发现时及时通知用户,即使用户重启设备后还没有打开过应用.其次,保证用户在使用应用时不出现新结果通知. 1. 一般intent和broadcast intent ...
- 斑马难题Step by Step
问题描述 分析 代码 在exercism.io被这个 Zebra Puzzle 难住了.这里一步一步的解决... 1.There are five houses. 2.The Englishman l ...
- CSS过渡、动画及变形的基本属性与运用
[逆战班] 动画可以让一个元素具有动态的效果,这个过程是使元素从一种样式变成另一个样式的过程.我们可以通过设置关键帧的方法来控制动画在某个时间节点的运动方式.通常设置多个节点来实现复杂的动画效果.0% ...
- CentOS7 安装python 3.5 及 pip安装
1.CentOS7 安装Python 的依赖包 # yum install -y zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-d ...
- Spring Boot 2.x基础教程:使用 ECharts 绘制各种华丽的数据图表
上一节我们介绍了如何在Spring Boot中使用模板引擎Thymeleaf开发Web应用的基础.接下来,我们介绍一下后端开发经常会遇到的一个场景:可视化图表. 通常,这类需求在客户端应用中不太会用到 ...
- JS基础入门篇(三十五)—面向对象(二)
如果没有面向对象这种抽象概念的小伙伴,建议先看一下我写的JS基础入门篇(三十四)-面向对象(一)
- SpringBoot1.5.10.RELEASE配置mybatis的逆向工程
在application.properties配置扫描等,不做多说 1.在pom配置文件中引入mybatis和mysql的依赖,如下: <dependency> <groupId&g ...