您的位置:首页 > 游戏 > 游戏 > Vue 第三方调用若依系统实现系统单点登录

Vue 第三方调用若依系统实现系统单点登录

2024/11/17 19:08:21 来源:https://blog.csdn.net/qq_43249953/article/details/142251790  浏览:    关键词:Vue 第三方调用若依系统实现系统单点登录

应用场景

甲方现有平台系统拟集成我方新开发系统,实现单点登录功能,即用户登录主平台后,无需重复登录即可无缝访问新系统,提升用户体验与操作效率。

解决方案

在这里插入图片描述

实现代码

前端
Step:1 新建ssoLogin.vue页面

在这里插入图片描述

<template><div></div>
</template><script>
export default {name: "SSOLogin",data() {return {loading: false,redirect: undefined,};},watch: {},created() {// 第三方平台登录this.getLoginByToken();},methods: {// 第三方平台单点登录系统getLoginByToken() {//获取地址栏中的tokenvar token = this.$route.query.token;//调用登录的接口if (token == "" || token == undefined || token == null) {// 无token,跳转到登录页面this.$router.push({ path: "/login" }).catch(() => {});} else {// 第三方平台单点登录系统this.loading = true;var loginInfo = {token: token,};this.$store.dispatch("LoginByToken", loginInfo).then((res) => {this.$message.success("登录成功");this.loading = false;//获取用户信息let roleName = res.data.roleName;if (roleName === "user") {sessionStorage.setItem("SSORoleName", roleName);}this.$router.push({ path: this.redirect || "/" }).catch(() => {});}).catch((err) => {console.log("登录失败", err);//异常信息this.loading = false;});}},},
};
</script>
Step:2 在store->modules的user.js中,实现LoginByToken

在这里插入图片描述

import { login, logout, getInfo, loginByToken } from '@/api/login'// 通过token单点登录LoginByToken({ commit }, userInfo) {const token = userInfo.token;return new Promise((resolve, reject) => {loginByToken({ token: token }).then(res => {setToken(res.token)commit('SET_TOKEN', res.token)resolve()})}).catch(error => {reject(error)})},
Step:3 在api目录的login.js中,实现loginByToken方法
// 通过token单点登录
export function loginByToken(token) {return request({url: '/ssoLogin',method: 'post',params: token})
}
Step:4 在router的index.js中,添加如下路由:
  {path: '/ssoLogin',component: () => import('@/views/ssoLogin'),hidden: true},
Step:5 在src的permission.js中,修改白名单如下:
const whiteList = ['/login', '/register', '/ssoLogin']

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com