检查多个角色是否具有方法级访问权限我已使用@PreAuthorize注解来检查角色@预先受权(“具有角色("”+受权常数.使用者+“",)”)如何使用@PreAuthorize注解检查多个角色?
9vw9lbht1#
您可以创建自定义注解来验证许多角色和条件。例如:
@Retention(RetentionPolicy.RUNTIME) @PreAuthorize("hasRole(T(com.bs.dmsbox.api.constants.RoleConstants).ROLE_AGENT) " + "|| hasRole(T(com.bs.dmsbox.api.constants.RoleConstants).ROLE_ADMIN)" + "|| (hasRole(T(com.bs.dmsbox.api.constants.RoleConstants).ROLE_CUSTOMER) && #userId == principal.username)") public @interface IsAuthenticatedAsAgentOrCustomerIsUserId { }
然后,您可以使用此注解,如下所示:
@IsAuthenticatedAsAgentOrCustomerIsUserId Folder findByUserIdAndType(@Param("userId") String userId, @Param("typeId") FolderType id);
此注解验证用户是否以角色AGENT或ADMIN登录如果用户具有角色CUSTOMER,则验证userId参数是否等于用户登录
userId
oewdyzsn2#
@预先受权(“有任何角色('角色管理员','角色使用者')”)
hasAnyRole() When you need to support multiple roles, you can use the hasAnyRole() expression. @PreAuthorize("hasAnyRole('ADMIN','DB-ADMIN')")
https://docs.spring.io/spring-security/site/docs/3.0.x/reference/el-access.htmlhttps://www.appsdeveloperblog.com/spring-security-preauthorize-annotation-example/显示器
jgovgodb3#
只需在SpEL表达式中使用&&或||即可合并角色
&&
||
@PreAuthorize("hasRole('" + AuthoritiesConstants.USER + "')" + " && hasRole('" + AuthoritiesConstants.ADMIN + "')" )
7xzttuei4#
我认为最好的选择是使用@PreAuthorize(“hasAnyRole()”)在本例中,我假设@PreAuthorize(“hasAnyRole(授权常量.用户,授权常量.管理员)”)
4条答案
按热度按时间9vw9lbht1#
您可以创建自定义注解来验证许多角色和条件。例如:
然后,您可以使用此注解,如下所示:
此注解验证用户是否以角色AGENT或ADMIN登录如果用户具有角色CUSTOMER,则验证
userId
参数是否等于用户登录oewdyzsn2#
@预先受权(“有任何角色('角色管理员','角色使用者')”)
https://docs.spring.io/spring-security/site/docs/3.0.x/reference/el-access.htmlhttps://www.appsdeveloperblog.com/spring-security-preauthorize-annotation-example/显示器
jgovgodb3#
只需在SpEL表达式中使用
&&
或||
即可合并角色7xzttuei4#
我认为最好的选择是使用@PreAuthorize(“hasAnyRole()”)
在本例中,我假设@PreAuthorize(“hasAnyRole(授权常量.用户,授权常量.管理员)”)