权限控制之开启动态权限注解支持|学习笔记

简介: 快速学习权限控制之开启动态权限注解支持

开发者学堂课程【Spring Security知识精讲与实战演示(二)权限控制之开启动态权限注解支持】学习笔记与课程紧密联系,让用户快速学习知识

课程地址https://developer.aliyun.com/learning/course/731/detail/13050


权限控制之开启动态权限注解支持

 

内容介绍

一、 注解支持权限控制开启步骤

二、 三种注解方式

三、举例说明

 

一、注解支持权限控制开启步骤

首先要想在处理器类或者业务层 service 类上添加注解来动态的控制权限,就要开启对应注解的支持,如图假如将这个权限控制(spring-secunity.xml)开启到这边,

image.png

在(spring-secunity.xm)l 边开,和在这里 (applicationContext.xml) 边开是一样的,注意这两个配置文件是将这份文件引入到这里边,也可以说applicationContext.xml 是由 IOC 父容器加载,所以这两个放到那里边都是可以的,假如把它放到这边开启权限控制的注解支持,接下来找到这个标签还是 security,有一个叫 global method security。

 

二、三种注解方式

有三种注解方式,首先第一个 enabled 开启,接下来第二个 enabled 开启,第三个enabled开启。第一个的意思,Secured-annotations=‘’enabled’’ 这个是最正统的,是 springSecured 内部的权限控制注解开关。只要将它改成enabled,就可以使用 springSecured 内部已经制定好的权限控制,第二个 pre-post-annotations=’’enabled’’ 是spring 指定的权限控制注解开关。

image.png

三、举例说明

上面是 spring Security 下面是 spring 不是一样的,比如下面这个是总部,是自己设置的,例如阿里巴巴总部定了一套协议,阿里巴巴下面有淘宝,天猫,支付宝,他各自内部还可以有自己的注解,就相当于分公司,所以这两套注解,开了下面能用总部,开了上面的能用于自己的,spring 框架是给 java 使用的,所以 jsr250-annotations=’’enabled’’表示开启 java250 注解支持,Java定义有很多套规范,其中有一套规范就是叫 Gs250,这一套规范里边提供了有很多的注解,只要将其开启,就开启了Java 对权限控制注解的一个支持。现在已经将开关给开启了,现在对开的位置,是在  spring-security.xml  配置文件,然后将注解加到 contoller 层,也可以加入业务层,但加到产品上这个一般要保持一致,比如现在产品这个列表,

@RequestMapping(‘’/product’’)

Public class ProductController{

可以加入列表也可以加入方法上,这里有一个 secured 对应的就是上面第一个,它们是对应关系,然后就可以直接写需要的角色,要保持一致,比如 aside.jsp 访问产品需要两个角色,Secured 这边也是需要,这边同样要写上一个 ADMIN。现在就认定当前这个访问需要这两个角色,对于加到产品上,重启项目。用小马登录,点击登陆。上面这个没有变产品,小马应该只能访问订单但却访问到了产品,因为两个代码不配套。将刚才那张图再打开如图。

image.png

这里边有两个容器,一定要注意一个事情如果注解放在了某一个容器的对象,那么注解支持也要放到对应的配置文件中,否则这两个容器不能共用,不配套。举个例子,比如spring声明式事务要使用注解的时候也要开启一个注解支持。这边应该有一个事物的注解支持,有了它业务层打开一个,才能起作用,现在来看这个注解是放到了业务层,也就是放到了父容器对象里边,放到父容器对象里边对应的注解支持也必须是父容器的内容配置文件,所以注解的支持应该放到父容器配置文件中,假如把这一句tx:annotation-driven给他点到spring-mvc.xml文件事物就控制不住了。这个时候就证明子容器里边开启了注解的支持,但是子容器 contoller 也不可能去加这个注解,所以这就是出现了不配套的情况,用现在这个思路来看注解支持,是放在子容器还是父容器里怎么判断,这配置文件是spring-security配置文件,是被applicationcontoller用给快递配置文件,它被spring application context文件引用了,那么他就是父容器,要注意注解放到了子容器还是父容器上。Product注解放到了容器的对象里边去。注解支持在父容器,注解在子容器,这是两个容器,所以他不启作用,想让它起作用,就必须将这一段controlX放到MVC配置文件中。这配置文件谁加载都一样,只要能读取它就能起作用,那这个地方报错是因为没早约束,重新约束的名字的encoding, Ctrlc ctrlv上面贴了一行,下面要填两行。那到这儿可以看出给它格式化,上面改了同样下面这个地方也得改,加载过后再一次启动项目。这次配套是已经配套好了,再来测试,继续拿xiaoma来登录,这会出现了一个403,这个正好就是想要的结果,xiaoma只访问订单,其他的都不可以,这才叫权限真正控制住了,注意注解的支持一定不要放错。

相关文章
|
数据可视化 Java Nacos
OpenFeign + Sentinel 实现微服务熔断限流实战
本文介绍如何在Spring Cloud微服务架构中,结合OpenFeign与阿里巴巴开源组件Sentinel,实现服务调用的熔断、降级与限流。通过实战步骤搭建user-service与order-service,集成Nacos注册中心与Sentinel Dashboard,演示服务异常熔断、QPS限流控制,并支持自定义限流响应。借助Fallback降级机制与可视化规则配置,提升系统稳定性与高可用性,助力构建健壮的分布式应用。
466 155
|
Python
Markdown 拓展-Docsify 主题美化
docsify-themeable - A delightfully simple theme system for docsify.js https://jhildenbiddle.github.io/docsify-themeable/#/
1457 0
|
存储 缓存 NoSQL
快速入门:Spring Cache
快速入门:Spring Cache
303 0
|
jenkins 持续交付 开发者
自动化部署:使用Jenkins和Docker实现持续集成与交付
【8月更文挑战第31天】本文旨在为读者揭示如何通过Jenkins和Docker实现自动化部署,从而加速软件开发流程。我们将从基础概念讲起,逐步深入到实际操作,确保即使是初学者也能跟上步伐。文章将提供详细的步骤说明和代码示例,帮助读者理解并应用这些工具来优化他们的工作流程。
|
算法 调度 Python
深入理解操作系统中的进程调度算法
在操作系统中,进程调度是核心任务之一,它决定了哪个进程将获得CPU的使用权。本文通过浅显易懂的语言和生动的比喻,带领读者了解进程调度算法的重要性及其工作原理,同时提供代码示例帮助理解。
|
人工智能 搜索推荐 数据挖掘
企业内训|阅读行业产品运营实战训练营-某运营商数字娱乐公司
近日,TsingtaoAI公司为某运营商旗下数字娱乐公司组织的“阅读行业产品运营实战训练营”在杭州落下帷幕。此次训练营由TsingtaoAI资深互联网产品专家程靖主持。该公司的业务骨干——来自内容、市场、业务、产品与技术等跨部门核心岗位、拥有8-10年实战经验的中坚力量——全情投入,从数据驱动决策、跨部门协作、全链条产品规划到短剧改编宣发策略,多维度构建起一套真正匹配数字内容生态趋势的运营方法论。
291 10
|
Java Maven
zwdd-sdk-java
zwdd-sdk-java
1153 0
|
前端开发 JavaScript API
探索现代Web开发中的动态数据交互——前端与后端整合实战
本文探讨了现代Web开发中前端与后端整合的关键技术点,通过实际案例演示了如何利用JavaScript和Node.js实现动态数据交互,全面解析从数据请求到响应的全过程。
648 18
|
网络协议 Docker 容器
Docker——如何修改运行中容器的映射端口
Docker——如何修改运行中容器的映射端口
640 0
|
前端开发 JavaScript Apache
web前端-Echarts-5.3安装配置和案例
web前端-Echarts-5.3安装配置和案例