前端sso单点登录

9 篇文章 0 订阅
本文介绍了如何在Vue应用中使用SSO(Single Sign-On)进行用户登录,并通过计算属性和方法实现角色权限判断。利用util.js设置Cookie存储用户信息,登录成功后根据不同角色跳转至相应页面。
摘要由CSDN通过智能技术生成

sso.vue 文件

<template>
	<div></div>
</template>
<script>
import util from '../../utils/util.js';
export default {
	computed: {
		code () {
			return this.$route.query.code;
		},
	},
	methods: {
		setRole (roles) {
			const isLeader = roles.some((item) => {
				return item.roleName === 'leader';
			});
			const isBusinessDepartment = roles.some((item) => {
				return item.roleName === 'business-department';
			});
			const isDataAdmin = roles.some((item) => {
				return item.roleName === 'data-admin';
			});
			const isSysAdmin = roles.some((item) => {
				return item.roleName === 'sys-admin';
			});
			let roleName = 'common'; // 一般角色
			if (isLeader) {
				// 领导
				roleName = 'leader';
			}
			if (isBusinessDepartment) {
				// 业务部门
				roleName = 'business-department';
			}
			if (isDataAdmin) {
				// 数据管理员
				roleName = 'data-admin';
			}
			if (isSysAdmin) {
				// 系统管理员
				roleName = 'sys-admin';
			}
			util.setCookie('roleName', roleName);
			return roleName;
		},
	},
	created () {
		if (!this.code) {
			const url = this.$api.sso_login_url();
			this.$get(url, {}, { isLoading: true }).then((res) => {
				if (res.code === 1000) {
					const origin = window.document.location.origin;
					console.log({ resdata: res.data });
					const herfUrl = `${res.data}&redirect_uri=${origin}/stc/sso`;
					location.href = herfUrl;
				}
			});
		} else {
			const url = this.$api.sso_login_confirm(this.code);
			this.$get(url, {}, { isLoading: true }).then((res) => {
				const { code, data } = res;
				if (code === 1000) {
					let { menus, roles, token, entityId, userName } = data;
					let isAdmin = roles.some((item) => {
						return item.isAdmin === '1';
					});

					isAdmin = isAdmin ? '1' : '0';
					menus = menus.map((item) => {
						return item.menuName;
					});

					util.setCookie('menus', JSON.stringify(menus));
					util.setCookie('isAdmin', isAdmin);
					util.setCookie('token', token);
					util.setCookie('userName', userName);
					util.setCookie('ssoEntityId', entityId);
					this.$message({
						showClose: true,
						type: 'success',
						message: '登录成功',
					});
					// 根据不同的角色跳转不同页面
					// const roleName = this.setRole(roles);
					// const routerName = util.homeForDiffRole(roleName, isAdmin);
					// console.log({ routerName });
					//  this.$router.push({
					//   name: 'routerName',
					// });
					this.$router.push({
						name: 'query',
					});
				}
			});
		}
	},
};
</script>

util.js 文件

import Cookies from 'js-cookie';
const util = {};
util.setCookie = function (name, value) {
  Cookies.set(name, value, { expires: 0.5, sameSite: 'lax', path: process.env.BASE_URL });
};
export default util
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值