secured
目录
Spring Security 小记
记录一下Spring Security(版本为4) 中的 @Secured(), @PreAuthorize() 及 @rolesAllowed()
前言
Spring Security 和Shiro 可以说是安全框架的唯二选择了。 Shiro,比较简单和灵活,简单够用。而Spring Security的功能和shiro都差不多,复杂一点,权限细粒度更高。但是因为SpringBoot,还是很值得尝试的。 Spring 全家桶 , 一用便知道。
权限注解
通常采用@Secured ,@PreAuthorize和@RolesAllowed 来对方法进行权限控制。
使用这些注解,先要配置@EnableGlobalMethodSecurity(securedEnabled = true)
这里看一下官网的例子
public interface BankService {
@Secured("IS_AUTHENTICATED_ANONYMOUSLY")
public Account readAccount(Long id);
@Secured("IS_AUTHENTICATED_ANONYMOUSLY")
public Account[] findAccounts();
@Secured("ROLE_TELLER")
public Account post(Account account, double amount);
}
@Secured和@PreAuthorize用法基本一样,但是里面有个大坑。
@RolesAllowed 是JSR250定义的注解
配置方式不一样:@EnableGlobalMethodSecurity(jsr250Enabled=true)
JSR250注解还有 @DenyAll 和 @PermitAll 。
小坑
之前运行同事的代码,发现权限控制失效。区别在于使用@Secured,而@Secured对应的角色必须要有ROLE_前缀。
通常在项目里面会实现UserDetails写user类,关键在于getAuthoritie()方法里面生成的role有没有前缀ROLE_。
使用@PreAuthorize是可以随意设置的
@PreAuthorize("hasAuthority('ADMIN')")和@PreAuthorize("hasAuthority('ROLE_ADMIN')") // 都可以,只要和实现的getAuthoritie里面的role对上
就可以
@Secured({"ADMIN"})和@Secured({"ROLE_ADMIN"}) // 实现的getAuthoritie里面的role都必须要有ROLE_前缀
文章最后发布于: 2018-09-18 14:39:17
相关阅读
1.MVC 2.SpringMVC执行流程 Spring MVC是结构最清晰的MVC实现。Controller接收请求,然后返回ModelAndView。 1.springmvc将所
绪论: 在大型的企业应用中,或多或少会用到大量的任务需要处理。如:邮件通知所有将要过期的会员等。 而在批处理任务的过程中,又需要
点击上方“Java
Spring框架中的面向切面思想在实现的过程中,核心的技术就是动态代理目的:在实际开发中,通常为目标类的所有业务方法附加通用性的增强
如何找到Spring的applicationContext.xml配置文件
目录 一、文章前言 二、applicationContext.xml查找 一、文章前言 Spring需要加载配置文件applicationContext.xml,那么自带的jar