Spring Roo Authority Levels

时间:2013-03-28 15:31:38

标签: spring spring-mvc spring-security spring-roo spring-webflow

我正在测试一个简单的网络应用程序。它有两个级别,即管理员和普通用户。该项目还有三个实体。我想要实现的是一个用户不能删除第一个实体中的任何条目的实例,尽管他可以创建一个。

我相信使用@RequestMapping是实现这一目标的方法但不完全确定如何实现,如果没有,还有其他方法吗?我们将非常感谢代码段。

提前致谢。

1 个答案:

答案 0 :(得分:0)

如果您只是通过用户界面阻止访问,然后禁止通过控制器调用delete方法,则可以隐藏视图jspx文件上的删除按钮。您还可以使用其他方法来限制用户执行某些操作。

<强> 1。用户界面

但是,您需要对控制器执行手动检查,以确保未经授权的用户不执行删除操作。

Todo,首先需要将Spring Security JSP Tag库名称空间导入到jspx文件中。

xmlns:sec="http://www.springframework.org/security/tags"

然后使用刚刚导入的Spring安全标记来包围您需要在用户级别显示的元素。

举个例子:

   <sec:authorize access="hasRole('ROLE_ADMIN')">
       <p>User is an administrator</p>
       <!-- Delete button goes here -->
    </sec:authorize>

有关代码库的详细信息,请访问http://static.springsource.org/spring-security/site/docs/3.0.x/reference/taglibs.html

<强> 2。控制器

您可以通过在ROLE_ADMIN

中添加以下内容来拦截网址以禁止没有applicationContext-security.xml的用户
<intercept-url pattern="/countries/**" access="hasRole('ROLE_ADMIN')" method="DELETE"/>

如果它不适合您,请尝试浏览以下链接。

http://forum.springsource.org/showthread.php?123781-intercept-url-method-attribute-not-work-with-put-and-delete

有关Spring Security的有趣教程,请访问http://static.springsource.org/spring-security/site/petclinic-tutorial.html

干杯。