spring security 注解@EnableGlobalMethodSecurity详解
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring security 注解@EnableGlobalMethodSecurity详解相关的知识,希望对你有一定的参考价值。
1、Spring Security默认是禁用注解的,要想开启注解,需要在继承WebSecurityConfigurerAdapter的类上加@EnableGlobalMethodSecurity注解,来判断用户对某个控制层的方法是否具有访问权限
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class OAuth2SecurityConfiguration extends WebSecurityConfigurerAdapter {
...........................
}
2、例如下面代码就表示如果用户具有admin角色,就能访问listAllUsers方法,但是如果方法前不加@preAuthorize注解,意味着所有用户都能访问listAllUsers
方法
@PreAuthorize("hasRole(‘admin‘)") @RequestMapping(value = "/user/", method = RequestMethod.GET) @ResponseBody public List<User> listAllUsers() { List<User> users = userService.findAll(); if(users.isEmpty()){ return null; } return users; }
3、@EnableGlobalMethodSecurity详解
3.1、@EnableGlobalMethodSecurity(securedEnabled=true)
开启@Secured 注解过滤权限
3.2、@EnableGlobalMethodSecurity(jsr250Enabled=true)
开启@RolesAllowed 注解过滤权限
3.3、@EnableGlobalMethodSecurity(prePostEnabled=true)
使用表达式时间方法级别的安全性 4个注解可用
- @PreAuthorize 在方法调用之前,基于表达式的计算结果来限制对方法的访问
- @PostAuthorize 允许方法调用,但是如果表达式计算结果为false,将抛出一个安全性异常
- @PostFilter 允许方法调用,但必须按照表达式来过滤方法的结果
- @PreFilter 允许方法调用,但必须在进入方法之前过滤输入值
以上是关于spring security 注解@EnableGlobalMethodSecurity详解的主要内容,如果未能解决你的问题,请参考以下文章
007-Spring Boot @Enable*注解的工作原理
如何在 Spring Boot 2 中处理 security.enable-csrf?
Spring @Enable模块装配的注解及编程实现方式,及包括“注解方式”,“编程方式”的自定义模块装配方式