SpringSecurity之权限模块设计

news2024/11/25 20:36:22

目录

前言

实现思路

代码结构

使用说明


前言

前面我们了解了关于微服务权限设计方案以及J W T的相关介绍,今天我们来聊一下,如何避免自己重复的写相同的代码,一次代码实现,即可完美复制到任何项目中实现权限相关的功能。

实现思路

首先,我们要做的就是先将我们的权限模块的功能了解,要做哪些东西。比如:用户登录、授权、认证、过滤、拦截等等。

我们将内容写完了,还不算完成,要做成可以引入到其他项目中的jar包,我们不能将一些配置项写死,比如:过滤内容、登录路径、退出路径、数据库访问链接等等。

上述文件是要让使用jar包的人灵活的自己配置,可控的来实现他人的高度定制内容!

代码结构

我们看一下我自己实现的权限通用模块的jar包,如下图:

 上图中每一个类的含义如下表所示:

类名含义
TokenWebSecurityConfig
安全配置类(2.7.0之前版本使用的)
TwoWebSecurityConfig
安全配置类(2.7.0之后版本使用的)
SecutityBaseController
测试权限控制类
TokenAuthFilter
授权过滤器
TokenLoginFilter
认证过滤器
PermissionResp
权限响应类
DefaultPasswordEncoder
密码处理工具类
TokenLogoutHandler
退出处理器
TokenManager
token管理工具类
UnauthEntryPoint
未授权统一处理类
实现未授权处理类
SecurityUser
安全用户实体类
SecurityApplication
启动类(打包时可删除此类)

这其中我引入了自己的通用模块中的异常处理、以及一些工具类,这些类在使用过程中,完全可以自己去实现,代码大致相同的内容。没有必要完全照搬我的。自己适用即是最好的。

使用说明

下面的文档适用于readme.md

#工具使用说明
   使用时需要在启动类扫描你的包路径
## 1、Spring security的使用说明
    不需要使用Spring security的需要在引入jar报的时候排除相关依赖
    
     <dependency>
        
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-security</artifactId>
        
    </dependency>
    
    需要引入的,需要添加下面的配置
    token:
      # 是否校验token时效性,默认为true
      enable: true
      # 是否校验token,默认为true
      checkToken: true
      # 是否校验登录,默认true
      checkLogin: true
      # 是否校验菜单权限,默认为true
      checkPermission: false;
      # 过期时间(分钟)
      time: 30
      # Token 存入缓存的key 后缀
      oldSuffix: aaa-TOKEN
      # 刷新Token 存入缓存的key 后缀
      refSuffix: aaa-REF-TOKEN
      # Token 编码秘钥
      signKey: 123456783909823
    permission:
      # 保存权限到redis的key后缀,key值为用户登录名userName + "-" + suffix
      suffix: aaa-PERMISSION
    login:
      # 登录地址
      url: /aaa/login
    loginOut:
      url: /aaa/loginout
    filterInformation: /ws/**,/swagger-ui.html,/webjars/springfox-swagger-ui/**,/swagger-resources/**,/v2/api-docs/**,/manage/permission/range,favicon.ico,/doc.html,/webjars/**,/swagger-resources/**,/v2/api-docs/**,/configuration/security,/aa/captcha,/user/register
    
    将resources/security中的UserDetailsServiceImpl复制到自己的service中,调整具体的实现逻辑
    
 # version
 2.0 : 调整User实体类,增加公司ID、用户UUID、去掉了公交公司ID
 3.0 : 调整生成token时,增加了companyId和UUID,通过token获取companyId
 4.0 : SpringSectury调整为2.7版本以上后,TokenWebSecurityConfig设置为过期,使用新的TwoWebSecurityConfig
 

好了关于通用权限模块设计就到这里!

欢迎点击西方卡片,关注《coder练习生》

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

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

相关文章

进阶方案:仅主机+NAT实现真机与虚拟机实现真正的互联互通

序 昨天写了NAT模式下使用端口转发实现真机可以访问到虚拟机的方案&#xff0c;但是我觉得应该还可以更简单&#xff0c;不需要使用端口转发&#xff0c;然后今天花了一上午的时间终于解决了这个问题&#xff0c;总结一下 仅主机模式 仅主机模式可以让真机跟虚拟机之间形成一…

【数据结构】算法的时间复杂度和空间复杂度 (上)(附leetcode练习题)

☃️个人主页&#xff1a;fighting小泽 &#x1f338;作者简介&#xff1a;目前正在学习C语言和数据结构 &#x1f33c;博客专栏&#xff1a;数据结构 &#x1f3f5;️欢迎关注&#xff1a;评论&#x1f44a;&#x1f3fb;点赞&#x1f44d;&#x1f3fb;留言&#x1f4aa;&…

智慧园区系统未来发展前景及应用趋势分析

完善的系统功能&#xff0c;强大的技术支持&#xff0c;使得智慧园区的应用趋势更加多元化&#xff0c;下面我们一起来了解一下智慧园区系统未来发展前景及应用趋势。 1、人工智能。人工智能技术是智慧园区未来发展的重要方向。人工智能可以帮助园区更好地解决实际问题&…

Docker笔记1 | Docker学习和简介

1 | Docker学习和简介1 学习来源2 官方学习资源3 Docker简介3.1 Docker是什么&#xff1f;3.2 Docker应用场景3.3 Docker架构3.3 Docker的优势3.3 与传统虚拟机的区别1 学习来源 本系列笔记学习主要参考书籍《Docker-从入门到实践》以及结合官网的教程&#xff0c;仅作为个人学…

电脑开机后进不了系统怎么办?

案例&#xff1a;我的电脑开机之后&#xff0c;进入不了系统怎么办&#xff1f; 【今天我打开电脑时&#xff0c;发现进入不了系统&#xff0c;以前从来没有出现过这种情况。有没有小伙伴有解决的办法&#xff1f;在线等&#xff0c;急&#xff01;】 电脑开机后无法进入系统…

node 服务发布后无法访问

node 服务发布后无法访问问题描述&#xff1a;在本地环境访问ip3060端口能正常访问&#xff0c;部署到服务器后访问接口一直超时 解决方法&#xff1a; 看端口是否对外暴露 操作步骤 设置防火墙 点击Windows defender 防火墙 点击高级设置 点击入站规则 新建规则 将3060端口…

《程序员面试金典(第6版)》面试题 10.10. 数字流的秩

题目描述 假设你正在读取一串整数。每隔一段时间&#xff0c;你希望能找出数字 x 的秩(小于或等于 x 的值的个数)。请实现数据结构和算法来支持这些操作&#xff0c;也就是说&#xff1a; 实现 track(int x) 方法&#xff0c;每读入一个数字都会调用该方法&#xff1b; 实现 g…

全球首个完全开源的指令跟随大模型;T5到GPT-4最全盘点

1. Dolly 2.0&#xff1a;世界上第一个完全开源的指令跟随LLM 两周前&#xff0c;Databricks发布了类ChatGPT的大型语言模型 (LLM)Dolly&#xff0c;其训练成本不到 30 美元。今天&#xff0c;他们发布了 Dolly 2.0&#xff0c;这是业内第一个开源的指令跟随LLM&#xff0c;并根…

飞项的5种应用方法,帮助你轻松学会项目管理

随着时代的更新变化&#xff0c;在现代企业中&#xff0c;项目管理已经成为一项非常重要的能力考核。 而对于刚开始入门项目管理的新手&#xff0c;很多都不知道从哪里入手&#xff0c;怎么入手。同执行者相比&#xff0c;管理者所思考的维度又大不相同&#xff0c;接下来我们就…

java实现定时器的方法

大家在工作中&#xff0c;常常会遇到一些突发的工作&#xff0c;需要在短时间内完成。这就要求我们能够快速的处理这些突发事件&#xff0c;但是如果直接调用方法来做&#xff0c;时间太长了&#xff0c;会导致程序变得臃肿。那么有没有什么好的办法呢&#xff1f;下面我们就来…

notepad++在windows下使用mingw编译C语言

mingw下载链接&#xff1a;https://winlibs.com/ 官网https://www.mingw-w64.org也能下载&#xff0c;不过官网下载的那个不会用&#xff0c;以后再试了。 strawberry里面也集成了gcc编译器&#xff0c;使用它也可以编译&#xff0c;只是试了一下。 解压后有1个多G&#xf…

python入门(五) vscode配置Anaconda 环境,代码自动提示

文章目录1.conda的下载地址:1.配置conda的环境变量安装conda配置path2.vcode配置python插件3.配置conda1) Select Interpreter2) 选择conda环境4.测试vscode配置Anaconda 环境&#xff0c;代码自动提示. 本人工作中&#xff0c;用到了ai相关技术&#xff0c;但是java出身&#…

400元左右的蓝牙耳机哪个牌子好?400以内的蓝牙耳机推荐

目前市面上的真无线耳机是百花齐放&#xff0c;小巧的无线蓝牙耳机携带方便&#xff0c;已经成为很多人生活的标配产品&#xff0c;通勤、办公、音乐、游戏方方面面都离不开TWS耳机。近两年&#xff0c;TWS耳机飞速发展&#xff0c;各方面的功能和体验均已完善&#xff0c;因此…

06_GBDT+LR论文翻译

0.摘要 在线广告允许广告客户仅针对可衡量的用户响应进行出价和付费&#xff0c;例如广告点击。因此&#xff0c;点击预测系统是大多数在线广告系统的核心。伴随每日活跃用户超过7.5亿&#xff0c;活跃广告客户超过100万的情况&#xff0c;预测Facebook广告点击是一项具有挑战…

AI加持,让图片处理更加得心应手

AI图片处理工具不仅能够帮助我们更高效地完成图片编辑和设计任务&#xff0c;还能够通过机器学习和深度学习技术生成出独特的图片和视觉效果。本期日报为大家带来了几款非常不错的AI图片工具&#xff0c;它们能够让你在创作中更具创意和想象力。不要再犹豫了&#xff0c;赶紧来…

Yolo V7详解及openvino部署

论文: https://arxiv.org/abs/2207.02696 代码: https://github.com/WongKinYiu/yolov7 Anchor Anchor是一种用于目标检测的先验框(prior box)生成方法&#xff0c;由Ren等人在2015年提出。Anchor可以在不同尺度和不同纵横比下生成多个先验框&#xff0c;并通过与真实目标框的…

工程项目管理系统源码-全面的工程项目管理

​ ​工程项目管理系统是指从事工程项目管理的企业&#xff08;以下简称工程项目管理企业&#xff09;受业主委托&#xff0c;按照合同约定&#xff0c;代表业主对工程项目的组织实施进行全过程或若干阶段的管理和服务。 如今建筑行业竞争激烈&#xff0c;内卷严重&#xff0c…

第17章_反射机制

第17章_反射机制 讲师&#xff1a;尚硅谷-宋红康&#xff08;江湖人称&#xff1a;康师傅&#xff09; 官网&#xff1a;http://www.atguigu.com 本章专题与脉络 1. 反射(Reflection)的概念 1.1 反射的出现背景 Java程序中&#xff0c;所有的对象都有两种类型&#xff1a;编…

shell命令总结

目录ls - 查看目录cd - 切换目录whereis - 查看是否有指定目录touch - 创建空文件mkdir - 创建目录cp - 复制文件或目录mv - 移动文件、更名rm - 删除文件cat - 显示文件内容more - 分页显示文件内容head - 查看文件前N行tail - 查看文件的后几行ln - 产生链接文件chomd - 改变…

图片转pdf无水印版怎么转换?快收藏这三种免费转换方法!

图片转pdf无水印版怎么转换&#xff1f;在日常生活中&#xff0c;为了节省批量图片发送的时间&#xff0c;我们通常会将多张图片转换成PDF文件格式文档&#xff0c;然后发送给他人。 目前在市场上有很多软件可以将图片转PDF。你想知道哪个软件可以将图片转PDF没有水印吗&#…