Spring Security-@PreAuthorize 权限注解分析

本文详细介绍了Spring Security的@PreAuthorize注解,用于在方法级别进行权限验证。通过@PreAuthorize("hasAuthority('xxx')"),可以检查当前用户角色是否包含特定权限。当权限匹配时允许访问,否则返回403错误。文章还探讨了如何自定义接口权限判断工具,通过SecurityContextHolder获取授权信息,并进行字符串匹配来确定权限。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、@PreAuthorize

@PreAuthorize 权限注解分析
参考URL: https://segmentfault.com/a/1190000023893122
Spring-Security@PreAuthorize(“hasAuthority(’’)”)源码分析
参考URL: https://blog.youkuaiyun.com/guoke2017/article/details/94439661

@PreAuthorize(“hasAuthority(‘xxx’)”)用来鉴别当前登录用户所拥有的角色是否有xxx权限访问该接口。

@PreAuthorize 注解,顾名思义是进入方法前的权限验证,@PreAuthorize 声明这个方法所需要的权限表达式,例如:@PreAuthorize(“hasAuthority(‘sys:dept:delete’)”),根据这个注解所需要的权限,再和当前登录的用户角色所拥有的权限对比,如果用户的角色权限集Set中有这个权限,则放行;没有,拒绝。

在这里插入图片描述查看该注解源码,根据描述,进入方法前判断el表达式。

el表达式返回true通过,返回false 拒绝访问403。

Spring Boot中,@PreAuthorize注解是用于在方法执行之前进行权限验证的。如果你不想使用@PreAuthorize注解,你可以通过其他方式来实现权限验证。 一种常见的方式是使用Spring Security框架来进行权限验证。Spring Security提供了一套完整的安全认证和授权机制,可以轻松地集成到Spring Boot应用中。 首先,你需要在pom.xml文件中添加Spring Security的依赖: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> ``` 然后,在你的应用主类上添加@EnableWebSecurity注解,启用Spring Security的功能: ```java import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; @EnableWebSecurity public class YourApplication { // ... } ``` 接下来,你可以创建一个继承自WebSecurityConfigurerAdapter的配置类,来配置权限验证规则: ```java import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; @Configuration public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests() .antMatchers("/admin/**").hasRole("ADMIN") .antMatchers("/user/**").hasAnyRole("ADMIN", "USER") .anyRequest().authenticated() .and() .formLogin(); } } ``` 上述配置中,我们定义了两个URL模式的权限规则:/admin/**需要具有ADMIN角色才能访问,/user/**需要具有ADMIN或USER角色才能访问。其他URL需要进行身份验证。 当你使用Spring Security进行权限验证时,你可以在方法中使用注解来进行更细粒度的权限控制,例如@Secured、@RolesAllowed等。 除了Spring Security,你还可以使用其他的权限验证框架或自定义实现来替代@PreAuthorize注解。这些方式的具体实现方式会根据你的需求和项目架构而有所不同。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西京刀客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值