必威体育Betway必威体育官网
当前位置:首页 > IT技术

Spring Security 小记 - @Secured(), @PreAuthorize() 及 @RolesAllowed()

时间:2019-10-27 14:44:27来源:IT技术作者:seo实验室小编阅读:56次「手机版」
 

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

相关阅读

SpringMVC框架入门教程

1.MVC 2.SpringMVC执行流程 Spring MVC是结构最清晰的MVC实现。Controller接收请求,然后返回ModelAndView。 1.springmvc将所

springBatch(1)---概述

绪论: 在大型的企业应用中,或多或少会用到大量的任务需要处理。如:邮件通知所有将要过期的会员等。 而在批处理任务的过程中,又需要

Spring AOP是什么?你都拿它做什么?

点击上方“Java

Spring框架——自动代理

Spring框架中的面向切面思想在实现的过程中,核心的技术就是动态代理目的:在实际开发中,通常为目标类的所有业务方法附加通用性的增强

如何找到Spring的applicationContext.xml配置文件

目录 一、文章前言 二、applicationContext.xml查找 一、文章前言 Spring需要加载配置文件applicationContext.xml,那么自带的jar

分享到:

栏目导航

推荐阅读

热门阅读