jsp 页面<security:authorize access="hasPermission;hasPermission方法不能跳转到主自定义重新的方法
时间: 2023-06-17 20:08:30 浏览: 110
`hasPermission` 是 Spring Security 中的一个表达式,用于判断当前用户是否有指定权限。它通常用在 JSP 页面中的 `<security:authorize>` 标签中,例如:
```jsp
<security:authorize access="hasPermission('admin')">
<!-- 只有具有 admin 权限的用户才能看到这里的内容 -->
<a href="/admin">管理页面</a>
</security:authorize>
```
如果你需要在 `hasPermission` 方法中进行页面跳转,可以将页面跳转的逻辑写在一个自定义的方法中,然后在 `hasPermission` 中调用该方法。例如:
```java
public class MySecurityExpressionRoot extends SecurityExpressionRoot {
public boolean myCustomMethod() {
// 页面跳转逻辑
return true;
}
public MySecurityExpressionRoot(Authentication authentication) {
super(authentication);
}
public boolean hasPermission() {
// 调用自定义的方法
return myCustomMethod();
}
}
```
然后在 Spring Security 的配置中,使用 `DefaultWebSecurityExpressionHandler` 类来设置自定义的 `SecurityExpressionRoot` 实现类:
```xml
<bean id="expressionHandler" class="org.springframework.security.web.access.expression.DefaultWebSecurityExpressionHandler">
<property name="permissionEvaluator" ref="myPermissionEvaluator" />
<property name="rootObject" >
<bean class="com.example.security.MySecurityExpressionRoot" />
</property>
</bean>
```
最后,在 JSP 页面中使用 `hasPermission` 方法时,传入方法名即可:
```jsp
<security:authorize access="hasPermission('myCustomMethod')">
<!-- 只有调用 myCustomMethod 方法返回 true 的用户才能看到这里的内容 -->
<a href="/myCustomPage">自定义页面</a>
</security:authorize>
```
阅读全文