如何使用@Secured注解限制方法调用
导读:本文共7879.5字符,通常情况下阅读需要26分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要:希望大家仔细阅读,能够学有所成!保护方法应用在Spring Securoty实现方法级别的安全性最常见的方法是使用特定的注解.将这些注解应用到需要保护的方法上.Spring Security 提供了三种不同方式的安全注解.Spring 自带的 @Security 注解.JSR-250 的 @RolesAllow 注解.表达式驱动的注解: @PreAythorize , @PostAuthorize... ...
目录
(为您整理了一些要点),点击可以直达。希望大家仔细阅读,能够学有所成!
Spring 自带的 @Security 注解.
JSR-250 的 @RolesAllow 注解.
表达式驱动的注解: @PreAythorize , @PostAuthorize ,@PreFilter , @PostFilter .
}
在Spring中如果要启用基于注解的方法安全性,需要在配置类上使用@EnableGlobalMethodSecurity,如下所示:
return"helloSpringSecurity";
}
itguang 和 admin 这两个用户都可以访问.如果方法被没有被认证的用户或者没有相应权限的用户访问,就会抛出一个Spring Security 异常.
(可能是AuthenticationException或AccessDeniedException的子类),他们是非检查时异常,这个一场病最终必须被捕获或者处理.
如果被保护的方法是在web中被调用的,这个异常会被Spring Security 的过滤器自动处理.否则的话,你需要编写代码来处理这个异常.
@PreAuthorize :在方法调用之前,基于表达式的计算结果来限制对方法的访问
@PostAuthorize 允许方法调用,但是如果表达式计算结果为false,将抛出一个安全性异常
@PostFilter 允许方法调用,但必须按照表达式来过滤方法的结果
@PreFilter 允许方法调用,但必须在进入方法之前过滤输入值
}
现在方法调用前后的注解都已经启用了.
}
这段代码是什么意思呢? 首先我们让访问 /addUser 的用户 必须是拥有 ROLE_USER 的用户,并且密码长度大于8,或者拥有 ROLE_ADMIN 权限的.
这如果如使用@Secured或者RoleAllowd 是实现不了的.而使用 @PreAuthorized 恰好能适用这些场景.
表达式中 #userEntity 直接使用了方法中的同名参数,这使得Spring Security 能够检查传入方法的参数.并将这些参数用于认证决策的指定.
return
启动项目,我们首先访问:http://localhost/getUser/itguang,会让我们登陆,我们用itguang 用户登陆,发现能够正确返回,
然后我们在此基础上再访问 http://localhost/getUser/admin ,就会返回http状态码403,禁止访问.说明配置生效.
return
我们使用了 @PreAuthorize("hasRole('ROLE_USER')") @PostFilter("filterObject.enabled == true")
这两个注解,
表明我们希望,用户必须拥有 ROLE_USER
权限,并且返回用户属性 enabled为true的所有用户.
如何使用@Secured注解限制方法调用的详细内容,希望对您有所帮助,信息来源于网络。