vue-cli3项目通过vue如何引入第三方js包完成登陆功能

注意:本次登陆,前后端分离;前端通过引入第三方的js包,调用js包里的初始化方法和提交方法完成登陆以及退出;

流程1.引入第三方包

  • 1.1在index.html文件下引入

2

流程2.完成初始化

  • 在组件的created下完成初始化

在这里插入图片描述
问题2.1因为初始化的时候,必须传递后端分配的state,用作验证

  • 当时做了几种传递state的方式,方式1:前端到了login页面后先请求借口获取state的值,然后传递给初始化的state,发现行不通(确实初始化赋值上去了分配的state,但是登陆失败,后端说不支持);

流程3.拦截跳转:

  • 最后采取方式2:前端在刚打开项目时候,路由是先进入 “/”,通过路由导航守卫进行拦截,如果是去路由 “/” 或者去“/login”,我就拦截住直接让页面跳到后端写的一个地址A,跳到这个地址A后,后端会帮我重定向到我本地的前端登录页(注意,一定要后端跳到本地的登录页,否则本地联调时候,监听不到你的路由变化,也没办法执行你登录页的操作),并且携带好state值;这样获取到的state的值,就可以用于初始化了;

在这里插入图片描述

  • 先是路由进入’/’

在这里插入图片描述

  • 主动拦截跳到后端地址,

在这里插入图片描述

  • 后端定向到前端本地登录页,完成初始化

在这里插入图片描述

流程4.点击登录

  • 同样登陆由于是js包需要配置,登录成功后,直接由后端重定向到前端本地的主页,并且携带上获取用户信息的sessionId。
  • 根据路由导航,如果url是去主页且有获取用户信息的sessionId,那么就通过到主页;如果sessionId是错误,到主页后会被定向到登录页;登录成功后将sessionId储存在本地

在这里插入图片描述

流程5.配置拦截器:在marn.js中配置

  • 每次访问时候,请求头上传递sessionId,后端做判断;
  • 每次响应做拦截,判断登录状态是否有问题
// 配置axios的请求拦截器
axios.interceptors.request.use(function(config) {// 在发送请求之前做些什么// console.log('请求到了哟', config.headers.Authorization)// 统一的给config设置 tokenconfig.headers.sessionId = JSON.parse(localStorage.getItem("tokenSessionId"));return config;},function(error) {// 对请求错误做些什么return Promise.reject(error);}
);
//响应拦截器 与后端定义状态是100签名错误 跳转到登录界面
axios.interceptors.response.use(function(response) {// 对响应数据做点什么console.log(response.data);console.log(store);console.log(router.currentRoute.query.sessionId);//当返回信息为未登录或者登录失效的时候重定向为登录页面if (response.data.success == 9) {//{"data":“sessionId”,"message":"登录已过期,请重新登录","success":9}localStorage.clear("tokenLoginUser");localStorage.clear("tokenUserName");localStorage.clear("tokenRoleCode");localStorage.clear("tokenSessionId");//走退出的功能(不能直接路由到登录页 会死循环)message.warning(response.data.message);setTimeout(() => {window.location.href = `http://zjt.djbx.com/uc-oidc/oauth/logout?redirectUrl=http://10.7.102.161:8082/localLogin/toLogin?type=3-${this.$route.query.sessionId}`;}, 2000);tuichu2();}return response;},function(error) {// 对响应错误做点什么return Promise.reject(error);}

流程6.退出登录

  • 重置本地数据,调用后端退出的接口,传递登录用户的sessionId,后端做清除
tuichu() {window.location.href = `http://zjt.djbx.com/uc-oidc/oauth/logout?redirectUrl=http://10.7.102.161:8082/localLogin/toLogin?type=3-${this.$route.query.sessionId}`;localStorage.clear("tokenLoginUser");localStorage.clear("tokenUserName");localStorage.clear("tokenRoleCode");localStorage.clear("tokenSessionId");this.$store.state.loginUser = "";this.$store.state.userName = "";this.$store.state.roleCode = "";this.$store.state.windowCONTENT = "http://10.7.102.161:8082/aegis/";this.$store.state.tabType = "myDistribution"; //标签页的类型控制v-if(项目)this.$store.state.tabArr = [{name: "我的分发",key: "myDistribution",title: "我的分发",type: "我的分发",},]; //标签页的数组this.$store.state.tabKey = "myDistribution"; //标签页的key即点击打开了哪个this.$store.state.menuKey = ["2"]; //侧边栏的默认打开key同时用来控制侧边栏的高亮

总结:本次登录是特殊的js包完成的,所以记录一下;
正常的登录可参考此篇文章,vue项目登录及token验证 vue-ant

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/403887.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

理解和配置 Linux 下的 OOM Killer

From: http://www.vpsee.com/2013/10/how-to-configure-the-linux-oom-killer/ 最近有位 VPS 客户抱怨 MySQL 无缘无故挂掉,还有位客户抱怨 VPS 经常死机,登陆到终端看了一下,都是常见的 Out of memory 问题。这通常是因为某时刻应用程序大量…

python 里面的单下划线与双下划线的区别

python 里面的单下划线与双下划线的区别 Python 用下划线作为变量前缀和后缀指定特殊变量。 _xxx 不能用from moduleimport *导入 __xxx__ 系统定义名字 __xxx 类中的私有变量名 核心风格:避免用下划线作为变量名的开始。 因为下划线对解释器有特殊的意义&#x…

前端vscode插件合集

工欲善其事必先利其器 安装步骤 . . . . . . . . . 1.中文包Chinese (Simplified) Language Pack for Visual Studio Code 2.自动闭合标签Auto Close Tag 3.同步修改标签Auto Rename Tag 4.高亮代码的回调,括号的区域范围Bracket Pair Colorizer 4.支持多中…

无法加载安装安装程序:Wbemupgd.dll

今天打开添加/删除程序 ,准备安装几个windows组件,结果出现下面的错误:无法加载安装安装程序:Wbemupgd.dll,或是找不到函数0cEntry.请与您的系统管理员联系。特定错误码是0x7e于是,搜索一下,原来是path环境变量中,缺少指向System32/wbem目录的指向...OK.…

Android卷一全文 第一章 阅读前的准备工作

本章主要内容本章简单介绍Android系统架构、编译环境的搭建以及一些工具的使用。1.1 系统架构 1.1.1 Android系统架构 Android是Google公司推出的一款手机开发平台。该平台本身是基于Linux内核的,图1-1展示了这个系统的架构:图1-1 Android系统架构 从…

/etc/fstab详解

From: http://blog.csdn.net/clozxy/article/details/5603222 fstab(/etc/fstab)是Linux下比较重要的配置文件,它包含了系统在启动时挂载文件系统和存储设备的详细信息。下面是我机子上的 fstab文件: LABEL/ / …

web安全字体

webfont解剖 Unicode字体可以包含数以千计字形有四个字体格式: WOFF2, WOFF, EOT, TTF一些字体格式需要使用GZIP压缩 一个web字体是字形的集合,且每个字形是一个描述了一个字母亦或符号的矢量图。 所以,一个字体文件的大小由两个因素决定&…

vue如何引入ant部分组件

官网ant 在marn.js下 import Vue from vue; import { Button, message } from ant-design-vue; import App from ./App;Vue.config.productionTip false;/* v1.1.2 */ Vue.component(Button.name, Button); Vue.component(Button.Group.name, Button.Group);/* v1.1.3 自动注…

各个行业纷纷瞅准了这块大蛋糕

今年以来,新疆民生工程和各援疆项目不断加大建设力度,钢材、石料等建筑上必不可少的材料需求见涨,钢铁行业和砂石行业纷纷进驻新疆市场,建厂投资,使新疆展现出一派向着繁荣发展的热火景象。黎明重工是矿山机械行业的领…

关于头文件中的 static inline函数

关于头文件中的 static inline函数头文件中常见static inline函数,于是思考有可能遇到的问题,如头文件经常会被包含会不会产生很多副本?网上说法不一。于是自己验证。经过arm-none-eabi-gcc下测试后得出结论。inline 关键字实际上仅是建议内联…

sql中问号是干什么的??

第一次在后台 程序中遇到sql语句中的问号: /*** * 方法描述 : 通过账号id更新该账号状态* param state 状态* param id 账号id*/ModifyingQuery("update LabAccount t set t.userState ?1 where t.userAcctId ?2")void updateState(String state, Stri…

linux下挂载windows上的共享目录,并设置所有者为非root用户

参考了很多文章,这里总结下我得出来的最优答案(针对我的需求而言)吧,但是还是存在bug,稍后指出! 以下是我的bash脚本,防止多次重复挂载,相信看了就能明白: [zcmvm-fedora20 share]$ cat m.sh #…

vue项目登录及token验证 vue-ant

在前后端完全分离的情况下,Vue项目中实现token验证大致思路如下: 1、第一次登录的时候,前端调后端的登陆接口,发送用户名和密码 2、后端收到请求,验证用户名和密码,验证成功,就给前端返回一个…

广告狂人 第1季

《Mad Men/广告狂人》是由American Movie Classics公司出品的美剧。故事背景设定在上世纪六十年代的纽约,大胆地描述了美国广告业黄金时代残酷的商业竞争。该剧曾获得第65届、第66届、第67届美国电影电视金球奖最佳电视剧。并连续四年夺得艾美奖剧情类最佳电视剧奖。…

设置Clover默认进入Windows,按快捷键F8可选择不同的引导

系统情况: Win7 Mac10.9.5 Clover 我要达到的目标是:默认进入Windows系统,如果有需要,可以选择进入其他系统,如Mac OS X 我原以为可以在clover中配置,达到这个目标,可是我经过多次实践&am…

适配器和外观模式

结构型:Adapter与Facade(适配器和外观模式)   一般作为阅读材料,首先想要明确的是我现在了解的设计模式的初衷,即为了解决什么问题。 适配器,如果有买过港版Iphone在内地使用的人应该会有三角大插头必须接…

js获取cookie获取不到问题 vue获取cookie以及获取不到问题

1.下载依赖包 npm i js-cookie -S2.在使用cookie的页面上进行引入 import Cookies from js-cookie3.使用 创建一个在整个网站上有效的CookieCookies.set(name, value);创建一个从现在起7天后过期的cookie,在整个站点上有效:Cookies.set(name, value, …

smarty二维foreach示例[顺代一维数组],再次加强版

2019独角兽企业重金招聘Python工程师标准>>> smarty二维foreach示例[顺代一维数组],再次加强版 WEB2.0 root 2009-4-9 10:46 评论(0) 阅读(682) 大 | 中 | 小 WEB2.0 | 评论(0) | 引用(0) | 阅读(682) view plain print ? {foreach itemrec from$result…

linux 函数学习--kzalloc()

使用include <linux/slab.h>void *kmalloc(size_t size, int flags);static inline void *kzalloc(size_t size, gfp_t flags) { return kmalloc(size, flags | __GFP_ZERO); } 123456说明给 kmalloc 的第一个参数是要分配的块的大小. 第 2 个参数, 分配标志 用kza…

动态链接库和静态链接库

From: http://blog.163.com/zhangjie_0303/blog/static/99082706201081105654484/ 动态链接库dll&#xff0c;静态链接库lib, 导入库lib 目前以lib后缀的库有两种&#xff0c;一种为静态链接库(Static Libary&#xff0c;以下简称“静态库”)&#xff0c;另一种为动态连接库(…