权限管理-整合 SpringSecurity(2) | 学习笔记

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 快速学习 权限管理-整合 SpringSecurity(2)

开发者学堂课程【微服务+全栈在线教育实战项目演练(SpringCloud Alibaba+SpringBoot)权限管理-整合 SpringSecurity(2)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/667/detail/11534


权限管理-整合 SpringSecurity(2)


权限管理-整合 SpringSecurity

1、在service_acl 模块中引入 spring _security

来到 service_acl 中,之前的内容都已经复制过了,功能也书写完成,所以现在需要在 service_acl 中引入一个依赖,在 service_acl 中进行权限管理。

<dependency>

<groupId>com.atguigu</groupId>

<artifactIdspring_security</ artifactId>

<version>0.0.1-SNAPSHOT</version>

</dependency>

2、创建查询登录和用户权限类

打开 spring _security,找到 Tokenwebsecurityconfig,有个 uesrdetailsservice,这个 user 的意思是当认证输入登录密码时,需要查询数据库,通过数据库查询密码是否正确。正确之后就会查询登录用户权限列表。

在 service_acl 中,找到 service,

在里面添加了一个 userDetailsServiceImpl 这个类,这个类已经添加好了,位置可以随意添加。

UserDetailsService 必须实现一个接口 UserDetailsService,这个接口是 security 写的,security 会找这个用户用的实现类,查询用户权限,并且判断用户是否成功,这其中涉及到面向接口思想,现在应用的 security 是一种框架,框架在设计的时候就会考虑到更通用,因为每一个程序中的内容都有区别,因此如何让框架更加通用,做法就是在框架本身提供了很多接口。

在应用框架的时候可以灵活的试验接口,然后书写自己的逻辑,当你做查询的时候,没有提供接口如何查询,只需要写个类,然后查询接口,书写逻辑。

书写类的时候,系统提供接口,在其中书写自己的属性,再试验接口也可以做到,面向接口开发,面向 internet 开发,实现接口都会有这种思路,这种思路在学习 java 早期 Dbutils 就应用这种框架,Dbutils 是面向接口开发的一个小框架,其中可以自己分装,但是当时里面的内容就足够我们使用,但是也可以自己分装,更加完善。

现在 security 给我们提供了很多接口,自己书写可以按照逻辑试验接口,在其中自己约定,但是要求是要返回到security 中的 security user,security user 包括数据,security 就通过这个对象查询数据。在整合中只是做到了下述图中的一部分内容,下述图中的大部分内容是由 security 完成的,并不是少了东西,而是由 security 完成了很多内容。

我们只需要进行一些配置,例如查询数据库,将数据放到 redis 中,但是其中如何授权等内容都是由 security 完成的。

image.png

流程就是在 common 中建立一个 spring_security 模块,在模块下线引入相关的依赖,引入依赖之后,从 security 的源码中将一些股东的代码复制过来,其中有两个核心的过滤器。

再之后就是在 security_acl 中引入 security 依赖,写一个查询用户名和密码的类,类的位置是随意的,需要实现UserDetailsService 接口,这个接口是由 security 提供的,在里面书写查询逻辑,最后返回 security 对象,完成整合,通过这个过程就能实现登录认证和授权。

过程中也应用到了 redis 数据库,包括向其中写数据和用数据。例如代码 redisTemolate,redisTemplate.opsForValue().set(user.getCurrentUserInfo().getUsername()user.getPermissionValueList());将你的用户名和密码放置到 redis 中

ResponseUtil.out(res,R.ok() . data("token , token)):取数据。

所以前提是将 redis 启动,再进行测试。上述过程就是整合代码到 security,在实际应用过程也是如此,将代码复制过来再整合乘自己的需求,因为它是一个固定的整合过程。

相关文章
|
SQL 关系型数据库 分布式数据库
PostgreSQL 在线修改数据类型 - online ddl 方法之一
标签 PostgreSQL , online ddl , trigger , ddl 事务 背景 有张表的主键id是serial,但现在不够了,需要升级成bigserial,有什么优雅的方法吗?我看下来好像会锁表很久(因为数据量挺大) 如果直接alter table,由于数据类型从4字节改成了8字节,而tuple结构是在METADATA里面的,不是每行都有,所以DEFORM需要依赖METADATA,目前来说,这种操作需要rewrite table。
4354 0
|
Web App开发 SQL 流计算
常见的浏览器内核
常见的浏览器内核
|
机器学习/深度学习 存储 编解码
什么是计算机视觉?
计算机视觉(Computer Vision)是涉及任何视觉内容计算的总称 ,包括图像、视频、图标以及涉及像素的任何内容的计算。
621 3
|
11月前
|
缓存 监控 Linux
|
自然语言处理 数据可视化 算法
【传知代码】私人订制词云图-论文复现
本文介绍了词云图的原理和生成步骤,包括分词、统计词频、去除停用词等,并提供了Python实现示例,利用`wordcloud`和`jieba`库。此外,还分享了技巧,如处理中文乱码、选择背景图、词库转换及自定义文字颜色。词云图能直观展示文本关键信息,适用于数据分析和文本挖掘,但也有其局限性,如无法显示词汇的语法关系。源码和更多资源可在文章附件获取。
317 0
【传知代码】私人订制词云图-论文复现
|
Android开发 开发者
什么是Android Jetpack,它包括哪些组件?
【4月更文挑战第17天】Android Jetpack是Google提供的一套工具集,助力开发者高效、稳定地开发Android应用。它包含架构、UI、行为和基础组件,简化了后台任务、导航和生命周期管理,使开发者能专注于创新。随着不断更新,如CameraX的推出,掌握Jetpack对开发者面试和工作至关重要。
226 0
|
测试技术 持续交付 开发者
探索编程之美:开发者的自我提升之旅
编程不仅是技术,更是艺术。本文从技术深度与广度的平衡、代码简洁之美、持续集成与部署、代码审查、测试驱动开发、有效沟通、时间管理及面对失败的勇气等方面,分享职业心得,助你在编程之路上实现技术和心灵的双重提升,享受编程带来的乐趣与成就感。
|
算法 计算机视觉
【YOLOv8训练结果评估】YOLOv8如何使用训练好的模型对验证集进行评估及评估参数详解
【YOLOv8训练结果评估】YOLOv8如何使用训练好的模型对验证集进行评估及评估参数详解
|
前端开发 Java Maven
Maven 快照(SNAPSHOT)
在多团队协作开发大型软件项目时,Maven快照(SNAPSHOT)解决了频繁更新版本的问题。当data-service团队频繁修复bug或改进并上传新版本到远程仓库时,会导致app-ui团队需不断更新依赖。快照是开发进程的一个临时版本,Maven会自动检查远程仓库的新快照。因此,data-service团队可以发布data-service:1.0-SNAPSHOT,每次覆盖旧快照,无需app-ui团队每次都手动更新pom.xml。
|
Ubuntu Linux 网络安全
Ubuntu 系统调整LVM卷/home分区到 / 分区
解决linux系统Ubuntu 下调整home和根分区大小:目标:将 /dev/mapper/ubuntu--55--vg-home 缩小到1.5T,并将剩余的空间添加给/dev/mapper/ubuntu--55--vg-root,1.
5040 0