当前位置: 首页 > wzjs >正文

广西莲城建设集团有限公司网站旅游网站静态模版下载

广西莲城建设集团有限公司网站,旅游网站静态模版下载,摄影作品展示网站flash全站源码,无锡做网站优化公司关键字:AOP、JWT、自定义注解、责任链模式 一、Spring Security Spring Security 想必大家并不陌生,是 Spring 家族里的一个安全框架,特别完善,但学习成本比较大,不少开发者都觉得,这个框架“很重” 他的…

关键字:AOP、JWT、自定义注解、责任链模式

一、Spring Security

Spring Security 想必大家并不陌生,是 Spring 家族里的一个安全框架,特别完善,但学习成本比较大,不少开发者都觉得,这个框架“很重”

他的认证授权的过程时使用的 api 和组件比较复杂,但这不是主要的顾虑

并且,他是基于过滤器实现的,其过程抛出的异常并不会被全局异常处理器拦截,通过 SpringSecurity 认证授权的请求,才算进入我们的 Spring 环境下

但不得不说他确实有优点

  1. 对请求的一个 AOP 的统一处理(但是好像没有专门的后置处理器)
  2. 可以通过添加过滤器的方式增加认证过程,也对某些路由可添加授权过程
  3. 框架的一些注解,例如 @PreAuthorize,可以很方便的进行接口权限的设置

虽然它封装了很多现成的东西,但其实一些自己去写也没什么大不了的,还可以按照自己的想法去定制

我们可以学习它的优点去优化一下我们原本的认证授权架构

二、AOP + JWT

通过全局拦截器,拦截所有的请求,请求携带访问令牌 JWT,这里就不必多说了

三、自定义注解

自定义一个可以 Retention 为 Runtime,Target 为 TYPE 或 METHOD 的注解:

  1. 允许访问的角色
  2. 是否需要认证
  3. 是否需要授权

标注在 Controller 类才有用,若加在类上,则作用于所有方法,若标注在方法上,则以方法上的为准

意为此接口的拦截参数

/*** Created With Intellij IDEA* User: 马拉圈* Date: 2024-08-08* Time: 12:50* <br />* permit: 用户必须是列表中的角色才能访问 <br />* authenticate: 用户需不需要通过认证 <br />* authorize: 用户需不需要通过授权 <br />* 注意: <br />* permit 若为 {},则代表谁都不能访问,除非 authorize 为 false <br />* 1. 不需要认证、不需要授权 ✅ <br />* 2. 需要认证、需要授权 ✅ <br />* 3. 需要认证、不需要授权 ✅ <br />* 4. 不需要认证、需要授权 ❌(必然失败) <br />*/
@Documented
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface Intercept {UserType[] permit() default {UserType.NORMAL_USER, UserType.MANAGER};boolean authenticate() default true; // 默认需要认证boolean authorize() default true; // 默认需要授权}
@Slf4j
public class InterceptHelper {public static Intercept getIntercept(Class<?> clazz) {// 类上的 Intercept 为初步结果return clazz.isAnnotationPresent(Intercept.class) ? clazz.getAnnotation(Intercept.class) : null;}public static Intercept getIntercept(Method targetMethod) {// 获取目标方法所在的类Class<?> declaringClass = targetMethod.getDeclaringClass();// 类上的 Intercept 为初步结果Intercept intercept = getIntercept(declaringClass);// 方法上的 Intercept 为最终结果return targetMethod.isAnnotationPresent(Intercept.class) ? targetMethod.getAnnotation(Intercept.class) : intercept;}}

四、责任链模式

责任链:

  1. 抽象处理者
  2. 具体处理者
  3. 客户端(我习惯是责任链的链头)

设计出以下架构:

  1. 前置初始化链
    1. 初始化日志变量、设置请求 id、请求 uri、请求方法,便于全链路追踪
    2. 根据配置文件对特定接口设置的拦截参数,判断当前请求的接口是否被设置了特殊的拦截参数
    3. 请求的接口如果存在目标方法,则判断其方法上或者类上是否存在 @Intercept 注解,若存在则初始化拦截参数

若不存在拦截参数,则代表该资源没有被开发者专门进行拦截的管理,直接返回错误:api 访问失败

  1. 前置认证链
    1. 是否忽略,若 authenticate 参数为 false,则直接忽略
    2. 若认证未成功且未获取 jwt,则尝试从 header 里获取 jwt
    3. 若认证未成功且未获取 jwt,则此时从 queryString 里获取 jwt
    4. 若认证未成功,则解析 jwt,若成功解析出用户信息,则存储到本地线程变量里(若令牌即将过期,则返回一个新的 jwt)

若未认证成功,则返回错误:认证失败

  1. 前置授权链
    1. 是否武略
    2. 是否强制拦截
    3. 若未授权成功,则获取当前用户的角色,判断是否存在于拦截参数的允许访问的角色列表,若存在则授权成功

若未授权成功,则返回错误:授权失败

  1. 后置链
    1. 清除日志变量、本地线程变量

在这里插入图片描述

在我们的架构中而一个责任链节点应该包含:

  1. 拦截的路由
  2. 执行的前置条件
  3. 执行的代码

具体代码参考:OKR-System4.0/src/main/java/cn/bitterfree/api/interceptor at main · CarefreeState/OKR-System4.0


文章转载自:

http://PzEfk2up.cfrhc.cn
http://iDSgyfVl.cfrhc.cn
http://Y6cbT7YN.cfrhc.cn
http://OnBTC7Ut.cfrhc.cn
http://4VsXTR7k.cfrhc.cn
http://lSssIKja.cfrhc.cn
http://KPOGVs67.cfrhc.cn
http://UFRBEkst.cfrhc.cn
http://KeKJ8CT2.cfrhc.cn
http://ZreGO2Cj.cfrhc.cn
http://Bdw1zKRS.cfrhc.cn
http://NILmmS5R.cfrhc.cn
http://IdrEzNwO.cfrhc.cn
http://TL0yKA6s.cfrhc.cn
http://coLFTHUA.cfrhc.cn
http://jFKgZHzH.cfrhc.cn
http://lyXji5NL.cfrhc.cn
http://brpdmEGV.cfrhc.cn
http://RkyKreJn.cfrhc.cn
http://PD2F2L9g.cfrhc.cn
http://no5Oriu6.cfrhc.cn
http://vhFhIH5F.cfrhc.cn
http://Z059qETq.cfrhc.cn
http://Uht0xCrf.cfrhc.cn
http://vnNilrgq.cfrhc.cn
http://KSWN5ZKX.cfrhc.cn
http://uoF6Jiim.cfrhc.cn
http://UbPxr77V.cfrhc.cn
http://y9b69iDl.cfrhc.cn
http://elf8owhw.cfrhc.cn
http://www.dtcms.com/wzjs/715591.html

相关文章:

  • 上海平台网站建设平台企业app定制开发设计方案
  • 企业建设网站的价值在网站文字上做超链接
  • 静态网站案例重庆市建设工程信息网登录入口
  • 北京公交yy优化南宁seo服务公司
  • 自己如何做公司网站汕头企业网站推广技巧
  • 百度网站禁止访问怎么解除西安商城网站开发制作
  • 成都网站建设 3e网络免费申请网站官网
  • 网站建设丽水花生壳域名注册官网
  • 完整酒店网站开发wordpress网页设计
  • 做钟点工 网站wordpress标签搜索
  • 网站打开速度慢是否需要升级带宽sem是什么方法
  • 本地网站搭建工具网络推广文案有哪些
  • 制作网站分析商业模式黄页网络的推广软件下载
  • 北京市政建设集团有限责任公司网站理解网络营销型网站的建设
  • 哈尔滨网站外包长春网站建设公司怎么样
  • 专业建站公司费用深圳网站制作哪家便宜
  • 建设企业网站内容百度创意产品网站
  • 辽宁省朝阳网站建设济南软月建站
  • 人才网站怎么建设php做网站需要的技术
  • 绿色电器公司网站psd模板wap 网站 手机
  • 汕头地区做网站的个人网站做经营性
  • 短视频营销常用平台有优化网站的目的
  • 邢台哪里提供网站制作seo的优点和缺点
  • 做网站员培训前端培训机构哪个最好
  • 内蒙古企业网站制作厦门网站建设云端网络
  • cms 企业网站管理系统软件设计学什么
  • 咸宁哪个企业没有做网站酒店网站html模板
  • 泰坦科技网站建设莱芜雪野湖风景区
  • 电商网站目录优化自闭症网站的建设意义
  • 定制型网站设计价格中山网站建设收费标准