第14章 保护方法应用
来源:互联网 发布:php开发简历自己缺点 编辑:程序博客网 时间:2024/06/04 19:46
概述:为方法设置调用权限过滤
Spring Security提供了三种不同的安全注解:、
- Spring Security 自带的@Secured注解
- JSR-250的@RolesAllowed 注解
- 表达式驱动的注解 包括@PreAuthorize @PostAuthorize 、@PreFilter 和 @PostFilter
1、@Secured注解限制方法调用
@Configuration
@EnableGlobalMethodSecurity(securedEnabled=true)
public class MethodSecurityConfig extends GlobalMethodSecurityConfiguration {
}
@Secured({"ROLE_SPITTER", "ROLE_ADMIN"})
public void addSpittle(Spittle spittle) {
}
2、Spring Security 中使用JSR-250 的@RolesAllowed注解
@Configuration
@EnableGlobalMethodSecurity(jsr250Enabled=true)
public class MethodSecurityConfig extends GlobalMethodSecurityConfiguration {
}
@RolesAllowed({"ROLE_SPITTER", "ROLE_ADMIN"})
public void addSpittle(Spittle spittle) {
}
3、使用表达式实现方法级别的安全性
@PreAuthorize 在方法调用之前,基于表达式的计算结果来限制对方法的访问
@PostAuthorize 允许方法调用,但是如果表达式计算结果为false,将抛出一个安全性异常
@PostFilter 允许方法调用,但必须按照表达式来过滤方法的结果
@PreFilter 允许方法调用,但必须在进入方法之前过滤输入值
@PreAuthorize(
"(hasRole('ROLE_SPITTER') and #spittle.text.length() <= 140)"
+ " or hasRole('ROLE_PREMIUM')")
public void addSpittle (Spittle spittle){
}
表示:普通用户输入的字数小于140,会员不限,更加灵活
方法之后调用
@PostAuthorize("returnObject.spitter.username==principal.username")
public Spittle getSpittleById(long id){}
如果是非常复杂的可以定义许可计算器(简单理解的就是定义一个类,取处理)
需要实现接口 PermissionEvaluator ,重写 两个hasPermission()方法
@PreAuthorize(
"(hasRole('ROLE_SPITTER') and #spittle.text.length() <= 140)"
+ " or hasRole('ROLE_PREMIUM')")
@PreFilter ("hasPermission(targetObject, 'delete')")
public void addSpittle (Spittle spittle){
}
- 第14章 保护方法应用
- SpringInAction学习笔记——第14章 保护方法应用
- 第9章 保护spring应用 9.1 Spring Security介绍
- 第9章 保护Web应用--Spring Security 之 HelloWord
- 第9章 保护Web应用----概念梳理
- Spring学习笔记之保护方法应用
- 第9章 保护Web应用--Spring Security 之 HelloWord 基于注解形式
- 第14章 任务和特权级保护
- 第九章 保护Web应用
- 第3章 数据保护:RAID
- 第11章 进入保护模式
- 第12章 存储器的保护
- 14招保护路由器安全的方法
- 14招保护路由器安全的方法
- 浅谈Android应用保护(一):Android应用逆向的基本方法
- 登录以保护应用
- 保护器件应用
- 保护web应用
- iOS Expected unqualified-id & Unknown type name 'NSString'
- NOIP2015信息传递
- RabbitMQ消息可靠送达
- 152. Maximum Product Subarray
- ie兼容
- 第14章 保护方法应用
- Java基础学习总结(108)——Java常见面试题再总结
- 视频学习笔记之一(贝叶斯)
- Python自动发送邮件
- php学习基础(2)
- angular2开发小型项目
- Android WebView加载网页失败处理
- UNIX高级环境编程-信号相关函数笔记
- pojo . vo . bo