首页 > 其他分享 >两个系统之间跳转免密登录

两个系统之间跳转免密登录

时间:2023-05-06 12:45:39浏览次数:34  
标签:免密 登录 next token let userInfo 跳转

原文链接:https://blog.csdn.net/CODING_1/article/details/125373831

在处理业务场景时需要跳转不同系统软件,在每次跳转都需要重新登录系统,那么这种繁琐的登录流程会让人心态爆炸,能不能在只登陆一个系统的情况下就可以免登录跳转其他系统呢?当然是可以的.
首先我们回忆一下正常的登录流程:

登录页输入用户名密码
点击登录,后台返回token
将token进行缓存
请求接口将token代入
如果实现免密登录,则不需要输入用户名密码这一流程,现在我们只需要传递一个参数给后台,让后台通过传递的参数解析后返回我们一个token,再利用这个新的token进行登录
思路有了,接下来就是撸代码的过程.
在A系统只需要添加window.open('https://xxx.html?token=xxxx', '_blank')打开B系统页面,
因为项目中使用的是vue,刚好可以使用vue的全局路由守卫router.beforeEach((to,from,next)=>{}) 我们在B系统 添加路由守卫

router.beforeEach((to, from, next) => {
let hrefIdx = window.location.href.indexOf('token='); // url中是否携带token
let userInfo = localStorage.getItem('userInfo') // 本地缓存中是否有用户信息(系统本身有可能已经登录)
if (hrefIdx > -1 && (userInfo === '' || userInfo === undefined || userInfo === null)) { // 如果url携带token,并且没有登录后的用户信息
let token = window.location.href.slice(hrefIdx + 6); // 截取token
axios.post(`后台接口`, token).then(res => {
// store.commit("USER_INFO") // 可能需要将用户信息存入store中, 视情况而定
// localStorage.setItem('menu', JSON.stringify(res.data.menuList)) // 可能需要缓存菜单列表, 视情况而定
...
// 这里省略的部分几乎和登录操作相同
let defaultUrl = "/home";
next(defaultUrl);
})
} else {
next()
}
})
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
当然如果不使用路由守卫,也可以通过跳转一个过渡页面或者在App.vue的生命周期中进行操作.个人还是建议,使用路由守卫.简洁方便管理

标签:免密,登录,next,token,let,userInfo,跳转
From: https://www.cnblogs.com/fswhq/p/17362711.html

相关文章

  • CTFhub-HTTP-302跳转
    题目环境: 访问题目中的链接:http://challenge-42aaee4c28b9e47d.sandbox.ctfhub.com:10800查看网页的源码:没找到有价值的信息 用burpsuit做拦截,重放测试: flag:ctfhub{2e9248c0c0ec4618842e3198} ......
  • Node + Express 后台开发 —— 登录标识
    登录标识系统通常只有登录成功后才能访问,而http是无状态的。倘若直接请求需要登录才可访问的接口,假如后端反复查询数据库,而且每个请求还得带上用户名和密码,这都是不很好。作为前端,我们听过cookie(session)和token,他们都是登录标识,各有特色,本篇都将完整实现。Tip:在上文(起步......
  • 通过跳转至系统通讯录方式,添加新的联系人,或编辑已有联系人
    ·需求:将联系人信息通过跳转至系统通讯录联系人编辑界面的方式,添加新的联系人,或是更新到已有联系人。联系人信息主要是姓名和电话号码,其中电话号码是list列表,可能为多个号码。·重点:如何将信息更新至已有联系人中·参考文章:https://juejin.cn/post/6953963082339057672·实......
  • vue 实现页面跳转
    1、router-link跳转//直接写上跳转的地址<router-linkto="/detail/one"><spanclass="spanfour">link跳转</span></router-link>//添加参数<router-link:to="{path:'/detail/two',query:{id:1,name:......
  • w11更改登录账户名
    设置-账号-其他账户,添加一个账户,并更改角色为管理员。然后点击win窗口,切换账户登录到新建的用户。把之前的账户更改角色为普通用户。再次切到其他用户,把之前的用户点击删除,此时删不了,更改其为普通用户。重启即可。......
  • springboot 项目国际化+登录拦截器
    项目页面国际化1.语言配置文件需要下载插件ResourceBundleEditor 新建国际目录i18n 在properties配置文件中自定义  2.前端index页面要设置语言参数传递给后端,切换中英文 3.自定义地区解析器MyLocaleResolver后端接收并处理 4.自定义了一个地区解析器要生效......
  • 若依登录验证码不显示404访问问题
    最近在学习接触Java,那若依开源项目来练练手,部署后发现登录界面的登录验证码一直刷不出来,提示404访问错误。查看网上一直没找到解决办法。但知道原理都是配置文件的问题。后来在一个其他项目上找到灵感,给nginx的nginx.conf配置文件增加配置信息,项目可以正常启动并可以正常登录了。......
  • 解决上传md文件时出现的“<Fault 401: '请配置正确的用户名与访问令牌(access token),
    使用的工具:pycnbolg下载地址:https://github.com/dongfanger/pycnblog具体操作按这位大神的博客:如何在博客园上传markdown文件-NotYourferry-博客园(cnblogs.com)出现报错如图:偶然看到这两位的评论:于是我将config.yaml中的password改成了我的令牌,就上传成功了。......
  • Django--基础登录的表单
    HTML页面关键代码<formaction=""method="post"> <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Title</title><!--导入jquery-->......
  • SSH工具远程登录Linux系统错误解决方法,错误提示Disconnected:No supported authentica
    一、使用轻量云控制面板的登录,sudosu获取root账号权限;二、执行passwd命令,输入新密码来修改root密码。三、修改密码登录为yes,步骤如下1、运行命令vi/etc/ssh/sshd_config2、将参数PasswordAuthentication设置为yes,前面不能有#号键3、重启SSH服务使用的系统是centos7.2,Cen......