我打算制作基于群组的权限计划,但我对以下内容感到困惑:
我有一些问题:
User > Group > Roles > Permissions
或
User > Roles > Permissions
@PreAutorize hasPermission(#, '')
或hasRole或what?答案 0 :(得分:8)
设计安全模型本身并不是一项简单的任务,如果没有对域的详细了解,那么您尝试保护它几乎是不可能的。话虽如此,你可以在这里得到的任何建议都是一般的,一般你的问题是。
1)在大多数应用程序中User -> Roles
就足够了。在更复杂的问题中,可以使用User -> Roles -> Permissions
,但这一切都取决于您如何定义每个范围。通常,细粒度的角色并将其中的一些角色分配给用户正是您所需要的。我会说另一个级别是在中间添加Groups
有点太多了。想象一下它作为一个文件系统 - 平面文件系统存在并且看起来不那么复杂。在决定这一点时花点时间,因为这是最重要的决定之一,并且会产生很多不易预测的含义。
2)认证和记忆机制已在Spring Security中实现 - 您需要做的就是选择最适合您的实现并使用安全命名空间支持对其进行配置。如果您还没有,请查看Petclinic示例应用和此tutorial。
3)如果您决定使用权限,则应始终检查权限。保持您选择的增益级别。始终如一。总是
4)根据您使用的视图技术,JSP taglib可能派上用场(如Ralph所述)。 JSF没有这样的东西 - 但写一些类似的东西相对简单。
5)正如拉尔夫所说,如果你隐藏某些东西并不意味着它不再存在 - 它仍然可以被非特权用户调用。
答案 1 :(得分:3)
Spring Security 4-SNAPSHOT
权限组
另一种方法是将权限划分为组并进行分配 分组给用户。
答案 2 :(得分:1)
5)即使你在GUI中隐藏了一些功能,恶意用户也可以发送一个伪造的HTTP请求来调用你的函数。
4)对于JSP,有spring security tag lib,也许JSF有类似的东西
3)取决于您的角色 - 权限分配
的实施2)身份验证并记住我与使用群组无关。
1)取决于您的需求。组使其变得更加困难,因此我将从用户角色权限开始,并在我真正需要时添加组。 - Spring提供了一个开箱即用的解决方案,可以将用户分配给权限。添加角色很容易。但是如果你从群组开始,你必须自己实现它。
我强烈建议您阅读Spring-Security-Docs。 要么你以春季安全推荐的方式做到这一点:“Suggested Steps for Getting Started with Spring Security”或者你读过(非常好的)书“Spring Security 3”(由该框架的一些作者撰写)。
如果你按照教程进行操作,你会发现如何进行简单的登录并记住我。
要有不同的角色和权限,您有两种选择。