- 浏览: 307801 次
-
文章分类
最新评论
-
流年末年:
那四个参数还是没看懂.....能不能解释下showPassst ...
我写的密码强度验证方法(原创) -
kingcs2008:
// 验证pws.jsshowPassstrength(&qu ...
我写的密码强度验证方法(原创) -
h957355152:
请问博主这个怎么用呢?我直接放到jsp里面调用showPass ...
我写的密码强度验证方法(原创) -
qq_15138059:
我写的全国省市县三级联动菜单,拿出来和大家分享了(原创) -
valenon:
评论呢?从MAIL FROM命令开始貌似就出错了:500 Er ...
如何发送伪造的电子邮件
实现授权精确控制的方法
精确的授权指的是基于用户特定的请求进行授权的应用功能特性。不同于我们在第二章: Spring Security 起步、第三章增强用户体验和第四章凭证安全存储 中的粗粒度的授权,精确的授权一般指的是对页面中的部分进行选择性显示的功能,而不是限制访问一个完整的页面。现实世界中的应用将会花费可观的时间用在规划精确授权的细节上。
Spring Security 为我们提供了两种方式来实现选择性显示的功能:
l Spring Security 的 JSP 标签库允许通过标准的 JSP 标签库语法在页面本身添加条件访问声明;
l 在 MVC 应用的控制层 ,检查用户的授权从而使得控制层做出能否访问的判断并将决定的结果绑定到模型 数据提供给视图层 。 这种方式依赖于标准的 JSTL 条件实现界面渲染和数据绑定,这种方式比 Spring Security JSP 标签库复杂一些,但是,它与标准的 web 应用 MVC 逻辑设计更吻合。
在开发精确控制授权的 web 应用时,这两种方法都能很好的实现功能。让我们通过 JBCP Pets 用例来介绍没种方法的实现。
我们希望使用安全规划的结果来保证在网站范围内的菜单栏上“退出”和“我的订单” 链接只能对登录过的或已购买的用户(分别为 ROLE_USER 和 ROLE_CUSTOMER )显示。我们还会保证“登录”链接只对浏览站点的未认证访客(不具备 ROLE_USER 的用户)可见。我们将会介绍这两种添加该功能的方式,首先从 Spring Security 的 JSP 标签库开始。
使用 Spring Security 的标签库有选择地渲染内容
我们在第三章中见到过,可以使用 Spring Security 的标签库访问存在于 Authentication 对象中的数据,这里我们将会见识到标签库的一些其它强大功能。 Spring Security 标签库最常用的功能就是基于授权规则有条件地渲染页面的各部分。这是通过 <authorize> 标签来实现的,它与 JSTL 核心库的 <if> 标签类似,在标签体中的内容是否显示由标签属性的条件结果来确定。让我们使用 <authorize> 标签按条件显示页面的部分。
基于 URL 访问规则进行有条件渲染
Spring Security 的标签库提供了按照已有的 URL 授权规则进行内容渲染的功能,而 URL 授权规则已经在应用安全的配置文件中进行了定义。这是通过使用 <authorize> 标签的 <url> 属性来达到的。
例如,我们要保证“ My Account ”链接只能对实际登录站点的用户显示——回忆一下我们在前面定义的如下访问规则:
- < intercept-url pattern = "/account/*.do"
- < span style = "white-space: pre;" > </ span > access = "hasRole('ROLE_USER') and fullyAuthenticated" />
所以, JSP 中条件显示“ My Account ”链接的代码如下所示:
- < sec:authorize url = "/account/home.do" >
- < c:url value = "/account/home.do" var = "accountUrl" />
- < li > < a href = "${accountUrl}" > My Account </ a > </ li >
- </ sec:authorize >
这能够保证除非用户拥有足够的权限来访问指定的 URL ,否则 tag 中的内容不会显示。还可以通过 HTTP 方法实现更高质量的检查,这要通过 method 属性来设置。
- < sec:authorize url = "/account/home.do" method = "GET" >
- < c:url value = "/account/home.do" var = "accountUrl" />
- < li > < a href = "${accountUrl}" > My Account </ a > (with 'url' attr) </ li >
- </ sec:authorize >
使用 url 属性对代码块定义授权检查的方法是很方便的,因为它对 JSP 中的实际授权检查进行了抽象并将其保存在安全配置文件中。
【注意的是, HTTP 方法应该与 <intercept-url> 安全声明中的一致,否则它们将不会按照你预期的进行匹配。另外,注意 URL 应该是对于 web 应用上下文根的相对路径(如同 URL 访问规则一样)。】
对于很多场景来说,使用 <authorize> 标签能够保证只有用户允许看见的前提下,正确地渲染链接或 action 相关的内容。需要记住的是,这个标签不仅能够包在一个链接外面,如果用户没有权限提交这个 form 的时候,它还能包在整个 form 外边。
基于 Spring 表达式语言进行有条件渲染
另外,可以联合使用 <authorize> 标签和 Spring 表达式语言( SpEL )更灵活地显示 JSP 内容。
回忆一下在第二章中我们初次体验 SpEL 提供的强大表达式语言, Spring Security 对其进行了更强的扩展,从而能够对当前安全的请求构建表达式。如果我们对前面的例子使用 SpEL 进行重构的话,在 <authorize> 标签中限制访问“ My Account ”链接的代码应该如下:
- < sec:authorize access = "hasRole('ROLE_USER') and fullyAuthenticated" >
- < c:url value = "/account/home.do" var = "accountUrl" />
- < li > < a href = "${accountUrl}" > My Account </ a > (with 'access' attr) </ li >
- </ sec:authorize >
对 SpEL 进行求值计算的代码与 <intercept-url> 所定义的访问规则(假设配置了表达式)背后所使用的代码是一样的。所以,同样的内置函数和属性在 <authorize> 标签中都是可以通过表达式使用的。
以上的两种使用 <authorize> 的方式都可以实现基于安全授权规则对页面显示内容进行精确控制渲染的强大功能。
使用 Spring Security2 的方式进行有条件渲染
以上提到的两种使用 Spring Security 标签库的方法实际上是 Spring Security3 新增的功能,并且这也是按照授权规则实现页面级安全的推荐方法;但是,同样是 <authorize> 标签支持其他的操作方法,这可能会在遗留代码中遇到,也可能在一定场景下,这样的方式能够更好的满足你的需求。
基于缺失某角色有条件显示内容
“ Log In ”链接应该只能对匿名的用户显示,也就是没有 ROLE_USER 角色的用户。 <authorize> 标签通过 ifNotGranted 属性支持这种类型的规则:
- < sec:authorize ifNotGranted = "ROLE_USER" >
- < c:url value = "/login.do" var = "loginUrl" />
- < li > < a href = "${loginUrl}" > Log In </ a > </ li >
- </ sec:authorize >
如果你现在以匿名用户试图访问站点,将会看到一个指向登录 form 的链接。
基于拥有列表中的某一个角色有条件显示内容
如同上一步那样,“ Log Out ”链接应该对拥有账号且已经登录的用户进行显示。 ifAnyGranted 属性在渲染内容前,要求用户拥有几个特定角色中的任何一个。我们用“ Log Out ”链接的方式来展示其使用:
- < sec:authorize ifAnyGranted = "ROLE_USER" >
- < c:url value = "/logout" var = "logoutUrl" />
- < li > < a href = "${logoutUrl}" > Log Out </ a > </ li >
- </ sec:authorize >
注意的是 ifAnyGranted 属性允许是以逗号分隔的角色集合来确定适当的匹配结果,用户只需要拥有角色中的任意一个标签中的内容就会渲染。
基于拥有列表中的所有个角色有条件显示内容
最后,使用 ifAllGranted 属性要求用户拥有标签中定义的所有角色:
- < sec:authorize ifAllGranted = "ROLE_USER,ROLE_CUSTOMER" >
- < c:url value = "/account/orders.do" var = "ordersUrl" />
- < li > < a href = "${ordersUrl}" > My Orders </ a > </ li >
- </ sec:authorize >
我们能够看到 authorize 标签的多种语法,以在不同的环境下使用。注意的是我们在前面讲到的三个属性可以组合使用。如 ifNotGranted 和 ifAnyGranted 属性能够联合使用以提供稍微复杂的 Boolean 等式。
使用 JSP 表达式
以上的三种页面授权方法( (ifNotGranted , ifAnyGranted , ifAllGranted )支持 JSP EL 表达式,它将会执行并返回授权的 GrantedAuthority (角色等)。如果授权要求的列表会根据页面计算结果而变化的话,这将会提供一定的灵活性。
发表评论
-
spring-security3 配置和使用(二)承上
2011-12-22 06:42 10842、xml配置,配置内容如下: Xml代码 ... -
spring-security3 配置和使用 (一)(转载)
2011-12-22 06:43 982最近项目中要使用到spring-security,可能研究 ... -
SpringSecurity3.X--一个简单实现(转载)
2011-12-22 06:43 2712作者对springsecurity研究不深,算是个初学者吧,最 ... -
SpringSecurity3.X--验证码(转载)
2011-12-22 06:44 1083一般来说,登录时都会要求用户输入验证码,以防止恶意登录。 可 ... -
SpringSecurity3.X--前台与后台登录认证(转载)
2011-12-23 06:33 3473不过一般我们在管理系统时都会分前台与后台,也就是说,前台与后台 ... -
SpringSecurity3.X--remember-me(转载)
2011-12-22 06:44 1756笔者在SpringSecurity中配置remember-me ... -
《Spring Security3》第六章第七部分翻译(认证事件处理与小结)
2011-12-23 06:34 1364认证事件处理 ... -
《Spring Security3》第六章第六部分翻译(Spring Security基于bean的高级配置)
2011-12-23 06:34 1080Spring Security 基于bean 的高级配 ... -
《Spring Security3》第六章第五部分翻译(手动配置Spring Security设施的bean)(转载)
2011-12-23 06:34 1053手动配置Spring Security 设施的be ... -
《Spring Security3》第六章第四部分翻译(异常处理)(转载)
2011-12-23 06:34 1263理解和配置异常处理 ... -
《Spring Security3》第六章第三部分翻译(Session的管理和并发)(转载)
2011-12-24 10:20 4238Session 的管理和并发 ... -
《Spring Security3》第六章第二部分翻译(自定义AuthenticationProvider)(转载)
2011-12-24 10:21 1550实现自定义的 AuthenticationProvide ... -
《Spring Security3》第六章第一部分翻译(自定义安全过滤器)(转载)
2011-12-24 10:21 1151第六章 高级配置和扩展 到目前为止,我 ... -
《Spring Security3》第五章第四部分翻译(方法安全的高级知识和小结)(转载)
2011-12-24 10:22 1076方法安全的高级知 ... -
《Spring Security3》第五章第三部分翻译(保护业务层)
2011-12-24 10:22 914保护业务层 到目前为止,在 ... -
《Spring Security3》第五章第二部分翻译下(实现授权精确控制的方法——页面级权限)(转载)
2011-12-25 00:47 1037使用控制器逻辑进行有条件渲染内容 ... -
《Spring Security3》第五章第一部分翻译(重新思考应用功能和安全) (转载)
2011-12-25 00:47 959第五章 精确的 ... -
《Spring Security3》第四章第四部分翻译(Remember me后台存储和SSL)(转载)
2011-12-25 00:47 1296将 Remember me 功能 ... -
《Spring Security3》第四章第三部分翻译下(密码加salt)(转载)
2011-12-25 00:48 1828你是否愿意在密码上添加点salt ? 如果安 ... -
《Spring Security3》第四章第三部分翻译上(配置安全的密码)(转载)
2011-12-26 00:41 1039配置安全的密码 我们 ...
相关推荐
基于的手势识别系统可控制灯的亮_3
untitled2.zip
S7-1500和分布式外围系统ET200MP模块数据
anaconda配置pytorch环境
高校教室管理系统,主要的模块包括查看首页、个人中心、教师管理、学生管理、教室信息管理、教师申请管理、学生申请管理、课时表管理、教师取消预约管理、学生取消预约管理等功能。
半挂汽车列车横向稳定性控制研究:基于模糊PID与制动力矩分配的联合仿真分析在典型工况下的表现,半挂汽车列车在典型工况下的横向稳定性控制研究:基于模糊PID与制动力矩分配的联合仿真分析,半挂汽车列车4自由度6轴整车model,横向稳定性控制,在低附着系数路面,进行典型3个工况,角阶跃,双移线,方向盘转角。 采用算法:模糊PID,制动力矩分配,最优滑移率滑膜控制。 以上基于trucksim和simulink联合仿真,有对应 p-a-p-e-r参考 ,关键词: 1. 半挂汽车列车 2. 4自由度6轴整车model 3. 横向稳定性控制 4. 低附着系数路面 5. 典型工况(角阶跃、双移线、方向盘转角) 6. 模糊PID算法 7. 制动力矩分配 8. 最优滑移率滑膜控制 9. Trucksim和Simulink联合仿真 10. P-A-P-E-R参考; 用分号隔开上述关键词为:半挂汽车列车; 4自由度6轴整车model; 横向稳定性控制; 低附着系数路面; 典型工况; 模糊PID算法; 制动力矩分配; 最优滑移率滑膜控制; Trucksim和Simulink联合仿真; P-A-P-E-R参考
路径规划人工势场法及其改进算法Matlab代码实现,路径规划人工势场法及其改进算法Matlab代码实现,路径规划人工势场法以及改进人工势场法matlab代码,包含了 ,路径规划; 人工势场法; 改进人工势场法; MATLAB代码; 分隔词“;”。,基于Matlab的改进人工势场法路径规划算法研究
本文介绍了范德堡大学深脑刺激器(DBS)项目,该项目旨在开发和临床评估一个系统,以辅助从规划到编程的整个过程。DBS是一种高频刺激治疗,用于治疗运动障碍,如帕金森病。由于目标区域在现有成像技术中可见性差,因此DBS电极的植入和编程过程复杂且耗时。项目涉及使用计算机辅助手术技术,以及一个定制的微定位平台(StarFix),该平台允许在术前进行图像采集和目标规划,提高了手术的精确性和效率。此外,文章还讨论了系统架构和各个模块的功能,以及如何通过中央数据库和网络接口实现信息共享。
三菱FX3U步进电机FB块的应用:模块化程序实现电机换算,提高稳定性和移植性,三菱FX3U步进电机换算FB块:模块化编程实现电机控制的高效性与稳定性提升,三菱FX3U 步进电机算FB块 FB块的使用可以使程序模块化简单化,进而提高了程序的稳定性和可移植性。 此例中使用FB块,可以实现步进电机的算,已知距离求得脉冲数,已知速度可以求得频率。 程序中包含有FB和ST内容;移植方便,在其他程序中可以直接添加已写好的FB块。 ,三菱FX3U;步进电机换算;FB块;程序模块化;稳定性;可移植性;距离与脉冲数换算;速度与频率换算;FB和ST内容;移植方便。,三菱FX3U步进电机换算FB块:程序模块化与高稳定性实现
光伏逆变器TMS320F28335设计方案:Boost升压与单相全桥逆变,PWM与SPWM控制,MPPT恒压跟踪法实现,基于TMS320F28335DSP的光伏逆变器设计方案:Boost升压与单相全桥逆变电路实现及MPPT技术解析,光伏逆变器设计方案TMS320F28335-176资料 PCB 原理图 源代码 1. 本设计DC-DC采用Boost升压,DCAC采用单相全桥逆变电路结构。 2. 以TI公司的浮点数字信号控制器TMS320F28335DSP为控制电路核心,采用规则采样法和DSP片内ePWM模块功能实现PWM和SPWM波。 3. PV最大功率点跟踪(MPPT)采用了恒压跟踪法(CVT法)来实现,并用软件锁相环进行系统的同频、同相控制,控制灵活简单。 4.资料包含: 原理图,PCB(Protel或者AD打开),源程序代码(CCS打开),BOM清单,参考资料 ,核心关键词:TMS320F28335-176; 光伏逆变器; 升压; 逆变电路; 数字信号控制器; 规则采样法; ePWM模块; PWM; SPWM波; MPPT; 恒压跟踪法; 原理图; PCB; 源程序代码; BOM
centos9内核安装包
昆仑通态触摸屏与两台台达VFD-M变频器通讯实现:频率设定、启停控制与状态指示功能接线及设置说明,昆仑通态TPC7062KD触摸屏与两台台达VFD-M变频器通讯程序:实现频率设定、启停控制与状态指示,昆仑通态MCGS与2台台达VFD-M变频器通讯程序实现昆仑通态触摸屏与2台台达VFD-M变频器通讯,程序稳定可靠 器件:昆仑通态TPC7062KD触摸屏,2台台达VFD-M变频器,附送接线说明和设置说明 功能:实现频率设定,启停控制,实际频率读取等,状态指示 ,昆仑通态MCGS; 台达VFD-M变频器; 通讯程序; 稳定可靠; 频率设定; 启停控制; 实际频率读取; 状态指示; 接线说明; 设置说明,昆仑通态MCGS与台达VFD-M变频器通讯程序:稳定可靠,双机控制全实现
研控步进电机驱动器方案验证通过,核心技术成熟可生产,咨询优惠价格!硬件原理图与PCB源代码全包括。,研控步进电机驱动器方案验证通过,核心技术掌握,生产准备,咨询实际价格,包含硬件原理图及PCB源代码。,研控步进电机驱动器方案 验证可用,可以生产,欢迎咨询实际价格,快速掌握核心技术。 包括硬件原理图 PCB源代码 ,研控步进电机驱动器方案; 验证可用; 可生产; 核心技术; 硬件原理图; PCB源代码,研控步进电机驱动器方案验证通过,现可生产供应,快速掌握核心技术,附硬件原理图及PCB源代码。
高质量的OPCClient_UA源码分享:基于C#的OPC客户端开发源码集(测试稳定、多行业应用实例、VS编辑器支持),高质量OPC客户端源码解析:OPCClient_UA C#开发,适用于VS2019及多行业现场应用源码分享,OPCClient_UA源码OPC客户端源码(c#开发) 另外有opcserver,opcclient的da,ua版本的见其他链接。 本项目为VS2019开发,可用VS其他版本的编辑器打开项目。 已应用到多个行业的几百个应用现场,长时间运行稳定,可靠。 本项目中提供测试OPCClient的软件开发源码,有详细的注释,二次开发清晰明了。 ,OPCClient_UA; OPC客户端源码; C#开发; VS2019项目; 稳定可靠; 详细注释; 二次开发,OPC客户端源码:稳定可靠的C#开发实现,含详细注释支持二次开发
毕业设计
三菱FX3U六轴标准程序:六轴控制特色及转盘多工位流水作业功能实现,三菱FX3U六轴标准程序:实现3轴本体控制与3个1PG定位模块,轴点动控制、回零控制及定位功能,结合气缸与DD马达控制转盘的多工位流水作业模式,三菱FX3U六轴标准程序,程序包含本体3轴控制,扩展3个1PG定位模块,一共六轴。 程序有轴点动控制,回零控制,相对定位,绝对定位。 另有气缸数个,一个大是DD马达控制的转盘,整个是转盘多工位流水作业方式 ,三菱FX3U;六轴控制;轴点动控制;回零控制;定位模块;DD马达转盘;流水作业方式,三菱FX3U六轴程序控制:转盘流水作业的机械多轴系统
在 GEE(Google Earth Engine)中,XEE 包是一个用于处理和分析地理空间数据的工具。以下是对 GEE 中 XEE 包的具体介绍: 主要特性 地理数据处理:提供强大的函数和工具,用于处理遥感影像和其他地理空间数据。 高效计算:利用云计算能力,支持大规模数据集的快速处理。 可视化:内置可视化工具,方便用户查看和分析数据。 集成性:可以与其他 GEE API 和工具无缝集成,支持多种数据源。 适用场景 环境监测:用于监测森林砍伐、城市扩展、水体变化等环境问题。 农业分析:分析作物生长、土地利用变化等农业相关数据。 气候研究:研究气候变化对生态系统和人类活动的影响。
基于博途V16的邮件分拣机控制系统设计与实现:西门子S7-1200PLC与TP700触摸屏程序化及其仿真视频与CAD接线控制要求详解。,邮件分拣机自动化系统设计与实现:基于西门子S7-1200PLC与TP700触摸屏的博途V16程序,包含仿真视频、CAD接线及控制要求详解。,邮件分拣机控制系统西门子S7-1200PLC和TP700触摸屏程序博途V16,带仿真视频CAD接线和控制要求 ,邮件分拣; 控制系统; 西门子S7-1200PLC; TP700触摸屏程序; 博途V16; 仿真视频; CAD接线; 控制要求,邮件分拣机控制系统:S7-1200PLC与TP700触摸屏程序博途V16集成仿真视频CAD控制要求
新增自定义链接的海报模板设置 智能会议 2.2.8+好男人基础模块2.01 开源版 智能会议系统包括会议介绍、会议日程、在线报名(支持付费和免费)、会场导航、会议指南、联系我们等功能;