从零搭建微服务-认证中心(四)

news2024/11/25 6:40:46

写在最前

如果这个项目让你有所收获,记得 Star 关注哦,这对我是非常不错的鼓励与支持。

源码地址:https://gitee.com/csps/mingyue

文档地址:https://gitee.com/csps/mingyue/wikis

搭建前端框架

感谢开源项目【vue-next-admin

本人后端一枚,前端不是很懂,前端有什么写的不好的地方,请积极指出,我虚心受教,积极改正!

运行项目

参考项目 README.md 【使用说明

登录与登出

访问:http://localhost:8888/#/login?redirect=/home&params={}

登录前缓存数据

image-20230529134224405

登录

image-20230529134058378

查看缓存

image-20230529134450665

登出

image-20230529140801840

查看缓存

oauth2 相关缓存已经删除了

image-20230529140629727

前端相关代码

登录

打开 src/views/login/component/account.vue,查看 onSignIn() 登录函数

const onSignIn = async () => {
	state.loading.signIn = true;

	useLoginApi().signIn(state.ruleForm).then(async res => {
		// 存储 token 到浏览器缓存
		Session.set('token', res.data.access_token);
		// 模拟数据,对接接口时,记得删除多余代码及对应依赖的引入。用于 `/src/stores/userInfo.ts` 中不同用户登录判断(模拟数据)
		Cookies.set('userName', state.ruleForm.username);
		if (!themeConfig.value.isRequestRoutes) {
			// 前端控制路由,2、请注意执行顺序
			const isNoPower = await initFrontEndControlRoutes();
			signInSuccess(isNoPower);
		} else {
			console.log(2);
			// 模拟后端控制路由,isRequestRoutes 为 true,则开启后端控制路由
			// 添加完动态路由,再进行 router 跳转,否则可能报错 No match found for location with path "/"
			const isNoPower = await initBackEndControlRoutes();
			// 执行完 initBackEndControlRoutes,再执行 signInSuccess
			signInSuccess(isNoPower);
		}
	});
	
};

打开 src/api/login/index.ts,查看 signIn() 登录函数

signIn: (data: object) => {
			console.log(data);
			let client_id = 1001;
			let grant_type = 'password';
			let client_secret = 'aaaa-bbbb-cccc-dddd-eeee';
			// TODO 规范入参类型
			let username = data.username;
			let password = data.password;

			return request({
				url: '/api/oauth2/token',
				method: 'post',
				params: {grant_type, client_id, client_secret, username, password}
			});
}

用户信息

src/stores/userInfo.ts 模拟用户信息

async getApiUserInfo() {
  ...
}

登出

打开 src/layout/navBars/topBar/user.vue,查看 onHandleCommandClick() 登录函数

const onHandleCommandClick = (path: string) => {
	if (path === 'logOut') {
		ElMessageBox({
			...
    }, 700);
				} else {
					done();
				}
			},
		})
			.then(async () => {
        // 调用退出登录接口
				useLoginApi().signOut().then(res => {
					// 清除缓存/token等
					Session.clear();
					// 使用 reload 时,不需要调用 resetRoute() 重置路由
					window.location.reload();
				})
			})
			.catch(() => {});
	}
};

小结

至此,一个简单的 OAuth2 前后端分离小 Demo 就算完事儿了。但截止目前还不能算是微服务,就是一个单服务的小应用。

接下来我们规划一下,小吹一波:

image-20230529142252577

目前的结构是 mingyue-ui 直接访问 mingyue-authmingyue-auth 直接模拟数据(并未交互数据库)。

我们希望是所有服务注册到 Nacos,然后 mingyue-ui 访问 mingyue-gateway,然后由 mingyue-gateway 自动请求到 mingyue-auth,最后通过 feign 调用到 mingyue-syste 查询数据库用户信息、客户端信息。

接下来我们先搭建 mingyue-nacos,认证中心未完待续~~

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

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

相关文章

TDengine 启动 taosAdapter,提供基于6041端口的RESTful 接口,建立REST 连接

一、前文 TDengine 入门教程——导读 二、开发指南 TDengine 完整的软件包包括: 服务端(taosd);命令行程序 (CLI,taos) 和一些工具软件;用于与第三方系统对接并提供 RESTful 接口的 taosAdapter&#xff1…

evpn route抓包

EVPN路由的种类比较多,每个类型抓一个包在此留存,以备不时之需。 与君共勉。 每种EVPN路由的具体作用及工作方式可以参见VXLAN专栏中其它文章。 Type1 当各网关设备之间的BGP EVPN邻居关系建立成功后,网关设备之间会传递以太自动发现路由。…

Pod生命周期

Pod生命周期 Pod创建过程运行初始化容器过程运行主容器过程 容器启动后钩子,容器终止前钩子容器存活性,就绪性探测 Pod终止过程 在整个Pod生命周期,会出现5中状态: 取值描述Pending(悬决)Pod 已被 Kubern…

聚数成峰,共赢未来,openGauss Developer Day 2023在京举行

[2023年5月26日 中国 北京]5月25日-26日,以“聚数成峰,共赢未来”为主题的 openGauss Developer Day 2023(openGauss开发者大会2023)在北京举办。本届大会在中国计算机学会、国家工业信息安全发展研究中心指导下,由ope…

Springboot +spring security,认证方式---Form表单认证的实现(一)

一.简介 这篇文章来学习下security的认证方式其中的Form表单认证 二.Spring Security的认证方式 2.1什么是认证 认证: 就是用来判断系统中是否存在某用户,并判断该用户的身份是否合法的过程,解决的其实是用户登录的问题。认证的存在,是为…

数据挖掘实战(以kaggle为例)

第一课 主要分为以下内容进行讲述 机器学习工业应用领域 机器学习常用算法 机器学习常用工具 解决问题流程 数据的处理比模型更为重要 老师的博客,内容很详细 数据预处理 有时候可以一个feature一个feature去做 特征工程 模型选择 模型状态评估 模型融合 B…

消息通知配置-shorp

消息通知配置 注意事项: 消息均采用异步发送,请提前配置好队列,点这里配置队列配置完之后请别忘记在列表切换消息为启用状态 模板消息配置方式 (以订单发货通知为例) 准备工作 查看后台 消息通知 -》 消息配置 -》 订单发货通知编辑 微信公…

牛客网基础语法1~10题

牛客网基础语法1~10题 前言:今天是咱们第一期刷牛客网上的题目。 目标:掌握基础编程,打牢基础知识,有一定的编程思想 鸡汤:读不在三更五鼓,功只怕一曝十寒。先干为敬,大家随意。 第一题 #includ…

内网环境制作nacos镜像

1. 拉取用于构建的镜像 git clone https://github.com/nacos-group/nacos-docker.git 拉去下来是这样的 下载nacos压缩包 https://github.com/alibaba/nacos/tags 以2.2.2版本为例 将下载的压缩包,放到build文件夹 3. 修改Dockerfile文件 4.将build下的文件上…

复杂的网络

文章目录 1 查看windows的网络信息2 桥接模式和NAT模式3 连接开发板和虚拟机4. 网络分层、TCP、IO多路复用5. 家里的网络是怎么连接的 1 查看windows的网络信息 打开设置-网络查看 也可以直接cmd ipconfig 这次的网络连接(我连接的手机热点)是通过Inte…

由于找不到msvcr110.dll 无法继续执行怎么解决(最新解决方法分享)

MSVCR110.dll是Windows操作系统中的一个重要文件,一旦它出现丢失问题,会导致影响计算机整体的问题。这个跟MSVCP110.dll类似的误报,通常是由于安装编程工具或 部分无法正确安装所导致的问题。在这篇文章中,我们将一些解决此问题的…

Vulkan Tutorial 6 统一缓冲区

目录 20 layout and buffer 顶点着色器 描述符集布局 21 统一缓冲区 更新统一数据 22 Descriptor pool and sets 描述符池 描述符集 使用描述符集 对齐要求 20 layout and buffer 我们现在可以将任意属性传递给每个顶点的顶点着色器,模型-视图-投影矩阵将…

【干货分享】一篇文章帮你搞定前端高频面试题

前言 如今前端技术日新月异。对于前端开发人员来说,不仅需要掌握最新的前沿技术,还需要保持对基础知识的熟练掌握。而面试则是进入优秀企业的必经之路。在面试中,高频面试题的掌握是获得成功的关键。本文将为大家总结前端高频面试题及其答案&…

网络爬虫是什么

网络爬虫又称网络蜘蛛、网络机器人,它是一种按照一定的规则自动浏览、检索网页信息的程序或者脚本。网络爬虫能够自动请求网页,并将所需要的数据抓取下来。通过对抓取的数据进行处理,从而提取出有价值的信息。 认识爬虫 我们所熟悉的一系列…

23种设计模式之备忘录模式(Memento Pattern)

前言:大家好,我是小威,24届毕业生,在一家满意的公司实习。本篇文章将23种设计模式中的备忘录模式,此篇文章为一天学习一个设计模式系列文章,后面会分享其他模式知识。 如果文章有什么需要改进的地方还请大佬…

高精度电压源如何设计出来的

高精度电压源是一种用于提供高精度电压的电子设备,通常用于测量和控制系统。高精度电压源的设计是一个复杂的过程,需要考虑多个因素,包括电路设计、元件选型、测量误差、稳定性等。下面将从电路设计和元件选型两个方面,详细介绍高…

如果通过Map转换成指定的class类

文章目录 前言如果通过Map转换成指定的class类1. 依赖2. 前期准备3. 测试 前言 如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。   而且听说点赞的人每天的运气都不会太差,实在白嫖的话…

自然语言处理实战项目8- BERT模型的搭建,训练BERT实现实体抽取识别的任务

大家好,我是微学AI,今天给大家介绍一下自然语言处理实战项目8- BERT模型的搭建,训练BERT实现实体抽取识别的任务。BERT模型是一种用于自然语言处理的深度学习模型,它可以通过训练来理解单词之间的上下文关系,从而为下游…

spring boot--web响应

2. 响应 前面我们学习过HTTL协议的交互方式:请求响应模式(有请求就有响应) 那么Controller程序呢,除了接收请求外,还可以进行响应。 2.1 ResponseBody 在我们前面所编写的controller方法中,都已经设置了…

spring集成mybatis

目录 (1)新建javaEE web项目 ​(2)加入相关依赖的坐标 (3) 创建相应的包和类 (4) 配置spring和mybatis的配置文件 在resources中建mybatis-config.xml 在 resources中建spring.xml 在 resources中建db.xml 在 resources中建config.propertis 集成mybatis配置 ,导入myb…