Spring Security 注解备忘
来源:互联网 发布:安装linux u盘坏了 编辑:程序博客网 时间:2024/05/16 18:03
简要
Spring Security是基于spring的应用程序提供声明式安全保护的安全性框架,它提供了完整的安全性解决方案,能够在web请求级别和方法调用级别
处理身份证验证和授权.它充分使用了依赖注入和面向切面的技术,Spring security主要是从两个方面解决安全性问题:
1.web请求级别:使用servlet过滤器保护web请求并限制URL级别的访问
2.方法调用级别:使用Spring AOP保护方法调用,确保具有适当权限的用户采用访问安全保护的方法.
处理身份证验证和授权.它充分使用了依赖注入和面向切面的技术,Spring security主要是从两个方面解决安全性问题:
1.web请求级别:使用servlet过滤器保护web请求并限制URL级别的访问
2.方法调用级别:使用Spring AOP保护方法调用,确保具有适当权限的用户采用访问安全保护的方法.
Web请求级别的保护
对于请求级别的安全性来说,主要时通过保护一个或多个URL,使得只有特定的用户才能访问,并其他用户访问该URL的内容.本文主要是基于spring mvc下整合Spring security模块
方法调用级别
spring security的方法级别的保护是基于Spring AOP技术。首先需要在spring配置文件中加以下配置,才能使spring Security保护那些使用相关注解的方法。
spring Security支持4种方法级别安全性的方法:
1.使用@Secured注解方法,这是spring自带的注解方法。@Secured("")内部的字符串不具有SpEL特性,只能是具体的权限。
2.使用@JSR-250 @RelosAllowed注解的方法。作用和使用方法与@Secured一样,不同在于它不是spring框架的,所以可以做到和spring框架的解耦。
3.使用Spring 方法调用前和调用后注解方法。这些方法支持SpEL.
4.匹配一个或多个明确声明的切点方法。
spring Security支持4种方法级别安全性的方法:
1.使用@Secured注解方法,这是spring自带的注解方法。@Secured("")内部的字符串不具有SpEL特性,只能是具体的权限。
2.使用@JSR-250 @RelosAllowed注解的方法。作用和使用方法与@Secured一样,不同在于它不是spring框架的,所以可以做到和spring框架的解耦。
3.使用Spring 方法调用前和调用后注解方法。这些方法支持SpEL.
4.匹配一个或多个明确声明的切点方法。
@Secured和 @RelosAllowed
@Secured("ROLE_ADMIN")public void addUser(User user){ ... }@RolesAllowed("ROLE_ADMIN")public void updateUser(User user){ ... }
使用Spring 方法调用前和调用后注解方法
可以使用SpEL方法有四种:
- @PreAuthorize: 在方法调用前,基于表达式计算结果来限制方法访问
- @PostAuthorize: 允许方法调用,但是如果表达式结果为fasle则抛出异常
- @PostFilter :允许方法调用,但必须按表达式过滤方法结果。
- @PreFilter:允许方法调用,但必须在进入方法前过滤输入值
@PreAuthorize("hasRole('ROLE_ADMIN')")public void addUser(User user){ //如果具有权限 ROLE_ADMIN 访问该方法 ....}//returnObject可以获取返回对象user,判断user属性username是否和访问该方法的用户对象的用户名一样。不一样则抛出异常。@PostAuthorize("returnObject.user.username==principal.username")public User getUser(int userId){ //允许进入... return user; }//将结果过滤,即选出性别为男的用户@PostFilter("returnObject.user.sex=='男' ")public List<User> getUserList(){ //允许进入... return user; }
Spring Security 支持的所有SpEL表达式
安全表达式 计算结果authentication 用户认证对象denyAll 结果始终为falsehasAnyRole(list of roles) 如果用户被授权指定的任意权限,结果为truehasRole(role)如果用户被授予了指定的权限,结果 为truehasIpAddress(IP Adress)用户地址isAnonymous() 是否为匿名用户isAuthenticated() 不是匿名用户isFullyAuthenticated 不是匿名也不是remember-me认证isRemberMe() remember-me认证permitAll始终trueprincipal用户主要信息对象阅读全文
0 0
- Spring Security 注解备忘
- Spring 注解(备忘)
- Spring Security使用授权标签和注解
- 基于注解的Spring Security原理解析
- spring 的定时注解scheduled备忘
- spring security 注解@EnableGlobalMethodSecurity的三种开启注解方式
- 使用java 编程的注解的方式定制spring security
- Spring security 4 使用java注解进行登陆验证
- Spring Security权限管理相关配置加注解
- spring security实现注解式权限管理时不成功,注解@Secured 无效
- Spring Security 结合CAS登入登出配置文件详解(备忘)
- 【备忘】2017年最新Spring Security开发REST服务完整项目教程
- 【备忘】2017最新基于spring security与spingmvc分布式权限管理系统
- Spring Security
- Spring Security
- spring security
- spring security
- spring security
- 【JavaWeb笔记】HTML入门
- 说文解字-JAVA工程师技能分布系列一(JavaSe:面向对象)
- Unity中查找子组件GameObject或Component的操作汇总
- junit单元测试报java.lang.NoSuchMethodError: org.junit.runner.Description.createSuiteDescription
- 总结:大数据几个重要框架的结构框图
- Spring Security 注解备忘
- Android GreenDao 3.0下给数据表的字段设置默认值
- JavaScript 通过Ajax 动态加载CheckBox复选框
- filename extension
- WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-
- 中文篇:Yii 路由引导与创建
- redis集群实现(八)redis+twemproxy集群
- Log4j的错误提示
- JAVA拆装箱问题到面向对象原理思考