<security:authorize access="hasPermission 中,hasPermission 怎么传参数
时间: 2023-10-16 07:26:11 浏览: 143
在 Spring Security 中,`hasPermission` 表达式需要传入两个参数:目标对象和权限表达式。常见的用法是在方法或类上使用注解方式授权,例如:
```java
@PreAuthorize("hasPermission(#book, 'read')")
public void read(Book book) {
// ...
}
```
其中,`#book` 表示方法参数中的 `Book` 对象,`'read'` 是权限表达式。
如果你需要在 XML 配置中使用 `hasPermission` 表达式,可以按照下面的方式传入参数:
```xml
<security:authorize access="hasPermission(#book, 'read')">
<!-- ... -->
</security:authorize>
```
这里的 `#book` 同样表示目标对象,`'read'` 是权限表达式。注意,如果你在 XML 中使用 `hasPermission` 表达式,需要在 Spring 配置文件中开启 Spring Security 的表达式语言支持,例如:
```xml
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:security="http://www.springframework.org/schema/security"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security.xsd">
<security:global-method-security pre-post-annotations="enabled"/>
<!-- ... -->
</beans>
```
这里的 `pre-post-annotations="enabled"` 表示开启方法级别的注解授权支持。
阅读全文