如何配置Spring Security以允许在JSP页面中使用hasPermission?

时间:2014-06-02 13:29:55

标签: spring spring-mvc spring-security

我正在尝试在我的spring项目的jsp页面中使用hasPermission。我已经在我的控制器/服务类的方法中使用它没有问题。阅读文章:

http://docs.spring.io/spring-security/site/docs/4.0.0.M1/reference/htmlsingle/#the-accesscontrollist-tag

从官方文档中,我理解为了在我的JSP页面中使用它,我需要实现一个派生自DefaultPermission的类,它将从自定义的AclService类加载。

我的问题是,它找不到任何关于如何实施所有课程的信息,甚至不知道这种方法是否是唯一的,或者我是否理解了这一课程以正确的方式(官方文件非常简短,关于这个主题,在互联网的其余部分,我无法找到更多信息)。

任何人都可以指出我在正确的方向吗?也许指出一些教程或代码示例。

1 个答案:

答案 0 :(得分:1)

这就是我所做的。我创建了自己的许可证:

public class MyPermissionEvaluator implements PermissionEvaluator {
...
}

然后我配置spring以通过

使用该evaulator
<beans:bean id="expressionHandler"
    class="org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler">
      <beans:property name="permissionEvaluator" ref="permissionEvaluator"/>
</beans:bean>

<beans:bean id="webExpressionHandler" 
    class="com.bulb.learn.webapp.security.CustomWebSecurityExpressionHandler">
    <beans:property name="permissionEvaluator" ref="permissionEvaluator"/>
</beans:bean>

<beans:bean id="permissionEvaluator" class="my.domain.MyPermissionEvaluator" />

这样所有表达式处理程序都可以访问我的evaulator。

然后,在JSP中(实际上,我使用的是jspx),我可以制作这样的标签:

<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %>
...
<sec:authorize access="hasPermission(#childUnit, 'read')">
    ...
</sec:authorize>

希望能让你朝着正确的方向前进。