基于记录所有者的Spring webapp安全性

时间:2011-06-23 06:51:28

标签: spring-security

假设我有用户和文章。

匿名者可以列出和阅读文章 只有注册和登录的用户才能创建文章 用户只能编辑自己的文章 当然,管理员可以做任何事情。

我看过春天的安全,但没有办法做到这一点。我的应用程序不需要角色,而ACL对此来说太“重”了。

也许我应该实施自己的安全措施?

1 个答案:

答案 0 :(得分:0)

你是对的,ACL对于这项任务来说太过分了。

您可以在JSP中使用Spring Security的authorize标记,该标记通过principal对象提供对登录用户的访问。使用给定用户名限制对用户编辑文章的访问的示例:

<sec:authorize access="hasRole('SOME_PRIVILEGE_OR_ROLE') and ${someArticle.username} == principal.username">
    ...
</sec:authorize>

请注意,SOME_PRIVILEGE_OR_ROLE可能是某些角色,例如'LOGGED_IN_USER',但也可以指定某个特权,例如'READ_ARTICLE'或'UPDATE_ARTICLE'。 Spring Security在这里非常灵活。无论您选择什么,它都必须位于您的用户对象的GrantedAuthorities集合中。

另请注意,您可以实现自己的用户对象,向UserDetails接口提供更多信息,例如:比较用户的ID而不是用户名。

最后,请注意,您需要最新版本的Spring Security(&gt; = 3.1)才能使Spring EL像示例一样工作。