为用户身份验证和授权编写安全性类的提示

时间:2008-11-19 13:56:35

标签: security language-agnostic

我的应用程序(组织,个人,订单,etC)中有很多对象,我需要一个很好的干净方法来决定哪些用户可以查看/编辑这些对象。用户拥有一系列权限,例如“可以编辑自己的联系人”和“可以查看团队的联系人”,也可以是“客户经理”等组的成员,因此需要检查各种事项(该用户是否是客户经理?是此用户团队管理此联系人?此用户是否可以编辑他的团队联系人?),然后才能确定他们是否可以访问该对象。

以前大多数逻辑是内联的,但随着它变得越来越复杂,我决定最好将它移到新的类,如OrganisationSecurity,OrderSecurity等,并在它们上创建CanEdit等方法。

这是正确的方法吗?我应该小心的任何陷阱?你怎么处理这个?

由于

3 个答案:

答案 0 :(得分:2)

查看Security Patterns,特别是有关身份验证和授权的区域。

答案 1 :(得分:1)

确保它没有“过度设计”,并仔细考虑为什么需要阻止访问以及您对对象用户的信任程度。

您可以考虑编写一个方面来阻止/允许访问某些方法: http://en.wikipedia.org/wiki/Aspect-oriented_programming

在我的公司,我们尝试了Acegi(在Java项目上),但发现它太重了/过度设计满足我们的需求。也许它更适合你的情况: http://www.javaworld.com/javaworld/jw-10-2007/jw-10-acegi2.html

答案 2 :(得分:0)

Google用于术语权利管理和XACML。这将使您指向更好的方向。