方法级别权限控制-基本介绍与JSR250注解使用

服务器端方法级权限控制

在服务器端我们可以通过Spring security提供的注解对方法来进行权限控制。Spring Security在方法的权限控制上支持三种类型的注解,JSR-250注解、@Secured注解和支持表达式的注解,这三种注解默认都是没有启用的,需要单独通过global-method-security元素的对应属性进行启用

开启注解使用

配置文件

<security:global-method-security jsr250-annotations="enabled"/>
<security:global-method-security secured-annotations="enabled"/>
<security:global-method-security pre-post-annotations="disabled"/>

注解开启

@EnableGlobalMethodSecurity :Spring Security默认是禁用注解的,要想开启注解,需要在继承ebSecurityConfigurerAdapter的类上加@EnableGlobalMethodSecurity注解,并在该类中将AuthenticationManager定义为Bean。

JSR-250注解

@RolesAllowed表示访问对应方法时所应该具有的角色

示例:
@RolesAllowed({"USER", "ADMIN"}) 该方法只要具有"USER", "ADMIN"任意一种权限就可以访问。这里可以省
略前缀ROLE_,实际的权限可能是ROLE_ADMIN

@PermitAll表示允许所有的角色进行访问,也就是说不进行权限控制

@DenyAll是和PermitAll相反的,表示无论什么角色都不能访问

Spring Security提供了一些注解来简化权限管理的配置。使用注解可以使代码更加简洁易懂,同时也可以提高开发效率。 下面介绍几个常用的注解: 1. @EnableGlobalMethodSecurity 这个注解用来启用方法级别的安全控制。它有三个属性: - prePostEnabled:启用@PreAuthorize和@PostAuthorize注解,默认为false。 - securedEnabled:启用@Secured注解,默认为false。 - jsr250Enabled:启用@RolesAllowed注解,默认为false。 在使用注解进行权限管理时,需要在配置类上添加@EnableGlobalMethodSecurity注解并设置相应的属性。 ```java @Configuration @EnableWebSecurity @EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true, jsr250Enabled = true) public class SecurityConfig extends WebSecurityConfigurerAdapter { ... } ``` 2. @PreAuthorize和@PostAuthorize 这两个注解用来控制方法调用前和调用后的访问权限。 @PreAuthorize注解表示在方法调用前进行权限检查,只有通过检查才能调用方法。例如: ```java @PreAuthorize("hasRole('ADMIN')") public void addUser(User user) { ... } ``` 在上面的示例中,只有具有“ADMIN”角色的用户才能调用addUser方法。 @PostAuthorize注解表示在方法调用后进行权限检查,只有通过检查才能返回结果。例如: ```java @PostAuthorize("hasRole('ADMIN')") public User getUserById(int id) { ... } ``` 在上面的示例中,只有具有“ADMIN”角色的用户才能得到getUserById方法的返回结果。 3. @Secured和@RolesAllowed 这两个注解用来控制方法调用的访问权限。 @Secured注解表示只有具有指定角色的用户才能调用方法。例如: ```java @Secured("ROLE_ADMIN") public void deleteUser(int id) { ... } ``` 在上面的示例中,只有具有“ROLE_ADMIN”角色的用户才能调用deleteUser方法。 @RolesAllowed注解与@Secured注解类似,也是表示只有具有指定角色的用户才能调用方法。例如: ```java @RolesAllowed("ROLE_ADMIN") public void updateUser(User user) { ... } ``` 在上面的示例中,只有具有“ROLE_ADMIN”角色的用户才能调用updateUser方法。 总的来说,以上就是使用注解进行权限管理的一些基本介绍注解可以使代码更加简洁易懂,同时也可以提高开发效率。但是,在使用注解时需要注意注解的作用范围,不要让注解的作用范围过大或过小。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值