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

dede网站建设衡水搜索引擎优化

dede网站建设,衡水搜索引擎优化,邹平网站建设优化公司,嘉兴建设教育网站Spring Security 的方法级权限控制是 AOP 技术在实际应用中一个极其强大的应用典范。它允许我们以声明式的方式保护业务方法#xff0c;将安全规则与业务逻辑彻底解耦。 核心思想#xff1a;权限检查的“门卫” 你可以把 AOP 在方法级安全中的作用想象成一个尽职尽责的“门…Spring Security 的方法级权限控制是 AOP 技术在实际应用中一个极其强大的应用典范。它允许我们以声明式的方式保护业务方法将安全规则与业务逻辑彻底解耦。 核心思想权限检查的“门卫” 你可以把 AOP 在方法级安全中的作用想象成一个尽职尽责的“门卫”。 目标方法 (deleteUser): 一个重要的、需要保护的房间。调用方 (Caller): 想要进入这个房间的人。权限注解 (PreAuthorize, Secured): 贴在门上的“入内规则”例如“仅限管理员入内”。AOP 代理 (Proxy): 站在门口的门卫。 当有人想进入房间时他接触到的不是房间本身而是门卫。门卫会先查看门上的规则然后检查这个人的身份权限。如果符合规则就放行如果不符合就直接把他拦在门外这个人根本没机会进入房间。 实现原理AOP 拦截与决策 整个过程是通过一个特殊的 AOP 环绕通知 (Around) 或 前置通知 (Before) 来实现的这个通知就是 Spring Security 提供的 MethodSecurityInterceptor。 Step 1: 开启方法级安全 首先你需要在你的配置类中开启方法级安全的功能。 import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;EnableGlobalMethodSecurity(prePostEnabled true, // 启用 PreAuthorize 和 PostAuthorizesecuredEnabled true, // 启用 Securedjsr250Enabled true // 启用 RolesAllowed ) public class MethodSecurityConfig {// ... }EnableGlobalMethodSecurity 这个注解告诉 Spring“请开始扫描带有方法级安全注解的 Bean并为它们应用 AOP 增强。” Step 2: AOP 代理创建 与 Transactional 一样当 Spring 容器发现一个 Bean (例如 AdminService) 的方法上带有 PreAuthorize 等注解时它不会直接使用原始的 AdminService 实例。相反它会 为 AdminService 创建一个 AOP 代理对象。这个代理对象中织入了 MethodSecurityInterceptor。容器中最终存在的是这个被增强了的代理对象。 Step 3: 方法调用与安全拦截 (核心) 当你的代码调用一个被保护的方法时例如 adminServiceProxy.deleteUser(1L)流程如下 调用被代理拦截 调用首先命中代理对象。 MethodSecurityInterceptor 被激活 这个安全拦截器开始工作它的逻辑可以看作一个前置通知对于 PreAuthorize或环绕通知。 a. 【方法执行前】进行权限决策: * 拦截器会查找当前被调用方法上的安全注解例如 PreAuthorize(hasRole(ADMIN))。 * 它会从 SecurityContextHolder 中获取当前用户的 Authentication 对象这个对象包含了用户的身份信息和拥有的权限如角色、权限字符串等。 * 它会使用 SpEL (Spring Expression Language) 解析器来执行注解中的表达式例如 hasRole(ADMIN)。 * 解析器会拿当前用户的权限和表达式进行比对。 b. 【做出决策】放行或拒绝: * 如果表达式评估为 true (权限匹配) 拦截器认为检查通过就会继续执行调用链最终调用到你原始的 AdminService 的 deleteUser 业务逻辑方法。 * 如果表达式评估为 false (权限不足) 拦截器会立即中断调用链直接抛出一个 AccessDeniedException (访问被拒绝异常)。你的核心业务方法 deleteUser 根本不会被执行。 c. 异常处理: * 这个 AccessDeniedException 会被 Spring Security 的异常处理机制捕获通常会向客户端返回一个 403 Forbidden 的 HTTP 状态码。 图解实现原理 ---------------- | Caller | ----------------| 1. 调用 adminService.deleteUser()v -------------------------------------------------------------------------- | AdminService 代理对象 (Proxy) | | | | ------------------------------------------------------------------ | | | MethodSecurityInterceptor (AOP Advice) | | | | | | | | 2. 【方法执行前】 | | | | - 查找注解: PreAuthorize(hasRole(ADMIN)) | | | | - 获取当前用户权限 (from SecurityContext) | | | | - 评估表达式: hasRole(ADMIN) ? | | | | | | | | 3a. 【权限匹配】if (true) { | | | | 继续调用 - target.deleteUser() -- [核心业务逻辑] | | | | } | | | | | | | | 3b. 【权限不足】if (false) { | | | | throw new AccessDeniedException(); -- 中断流程 | | | | } | | | | | | | ------------------------------------------------------------------ | | | --------------------------------------------------------------------------^ || 4. (成功) 返回结果 or (失败) AccessDeniedException || |--------------------------------------------------------------- 代码示例 Service public class DocumentService {// 只有拥有 ROLE_ADMIN 角色或 WRITE_DOCUMENT 权限的用户才能调用PreAuthorize(hasRole(ADMIN) or hasAuthority(WRITE_DOCUMENT))public void editDocument(String docId) {System.out.println(Executing: Editing document docId);// ... 核心业务逻辑 ...}// PostAuthorize: 在方法执行后进行权限检查可以基于返回值进行判断// 只有当返回的文档所有者是当前用户时才允许返回PostAuthorize(returnObject.owner authentication.name)public Document getDocument(String docId) {System.out.println(Executing: Fetching document docId);// ... 从数据库获取文档 ...return findDocumentInDb(docId); } }总结 核心技术Spring AOP 的前置通知或环绕通知。关键角色 EnableGlobalMethodSecurity: AOP 功能的“总开关”。代理对象 (Proxy)拦截方法调用。MethodSecurityInterceptor: 实现了具体的安全检查逻辑。SecurityContextHolder: 提供当前用户的认证和权限信息。 工作流程 代理拦截调用被代理对象拦截。权限检查在目标方法执行前拦截器根据注解和当前用户权限进行决策。放行或中断如果权限足够则执行业务方法如果不足则直接抛出异常中断执行。 通过 AOPSpring Security 将复杂的权限校验逻辑从业务代码中优雅地分离出去使得代码更加清晰、安全规则更易于管理。
http://www.pierceye.com/news/59359/

相关文章:

  • 1个空间做两个网站网络营销策划方案1500字
  • 金湖县建设局网站游戏的网站
  • 做直播网站需要学什么杭州网站建设公司代理加盟
  • 鹰潭建设网站公司优化大师官方
  • 做网站先建立模型百度关键词指数工具
  • 网站购买流程模板网站建设珠海
  • html网站前台模板手机网站建设电话咨询
  • 关于网站开发人员的薪资营销网站建站企业
  • 网站图片上字体动态怎么做的天津 交友 网站建设
  • 大学生心里健康网站设计与建设iis 网站建设中
  • 奉贤集团公司网站建设智慧团建登录
  • 安卓手机如何做网站网络科技公司名字起名大全
  • 海安建设局网站图片在线压缩
  • 电子商务网站建设实训 报告爱网站在线观看视频
  • 网站开发专员网站降权后 换域名
  • 淘客请人做网站如何做google推广
  • 学院网站建设管理制度wordpress仪表盘加载很慢
  • 网站的制作步骤重庆网站建设备案
  • 医院关于申请网站建设的请示买手表去哪个网站买是正品的
  • 深圳石岩做网站的公司医疗网站建设服务
  • wordpress改了固定连接亚马逊排名seo
  • 品牌宣传型网站有哪些iis默认网站怎么设置
  • 旅游网站模块帝国cms响应式网站模板
  • 做啥网站赚钱?做毕业设计哪个网站好
  • 普陀网站开发培训短网址服务平台
  • 仿163源码交易平台宽屏整站源码 网站模板交易平台源码wordpress插件汉化
  • 门户网站如何建设方案本地访问wordpress
  • 做网站接单土木工程毕业设计网站
  • 网站推广朋友圈文案wordpress短信通知
  • 景县做个油管的网站怎么做朋友让帮忙做网站