假设我有用户和文章。
匿名者可以列出和阅读文章
只有注册和登录的用户才能创建文章
用户只能编辑自己的文章
当然,管理员可以做任何事情。
我看过春天的安全,但没有办法做到这一点。我的应用程序不需要角色,而ACL对此来说太“重”了。
也许我应该实施自己的安全措施?
答案 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像示例一样工作。