这是一个
Acegi
官方的例子。它以联系人的管理为例子,说明如何使用
Acegi
作权限控制。这个例子包含在
acegi
的包里面。下载地址:
http://prdownloads.sourceforge.net/acegisecurity/acegi-security-0.8.3.zip?download。
联系人管理说明了下列中心的Acegi安全控制能力:
-
Role-based security
(基于角色的安全)
――每个责任人都是某个角色的一员。而角色被用来限制对某些安全对象的访问。
-
Domain object instance security
(域对象实例安全)
――合同,这个系统里的主要域对象,拥有一个访问控制列表(
ACL
),用来指明谁允许读、管理和删除对象。
-
Method invocation security
(方法调用安全)――
这个
ContactManager
服务层对象
包含一些受保护的和公开的方法。
-
Web request security
(
Web
请求安全)
――这个“
/secure
”
URI
路径被使用
Acegi
安全保护,使得没有
ROLE_USER
角色的用户无法访问。
.
-
Security unaware application objects
(保护未知的应用对象)
――受保护的对象与
Acegi
之间没有明显的耦合或契约,所以它们没有察觉到安全是由
Acegi
提供的。
*
-
Security taglib usage
(安全标签库使用)
――所有的
JSP
使用
Acegi
安全标签库来封装安全信息。
*
-
Fully declarative security(
完全声明式的安全
)
――每一个安全方面特性都是在
application context
里面使用标准的
Acegi
安全对象来配置的。
*
-
Database-sourced security data
(支持数据库来源的安全数据)
――所有的用户、角色和
ACL
信息都可以从一个兼容
JDBC
的内存数据库获得。
-
Integrated form-based and BASIC authentication
(集成基于表单和
BASIC
验证)――
任何
BASIC
验证头部被检测以及作为验证使用。默认使用基于表单的普通交互式验证。
-
Remember-me services
(记住我的服务)――
Acegi
安全的插件式的“
remember-me
”
策略被演示。在登录表单里有一个相关的选择框与之对应。
联系人管理的业务功能描述:
1.1.
每个用户登录后,可以看到一个联系人列表。例如,
marissa's Contacts
Add
说明:用户没有权限访问的联系人信息,将不会显示。
2.2.
用户可以增加新的联系人信息。
3.3.
如果有删除权限,用户可以看到在联系人后面有一个“
Del
”链接。用户可以点击这个链接来删除某个联系人信息。
4.4.
如果有管理权限,用户可以看到在联系人后面有一个“
Admin Permission
”链接。用户可以点击这个链接来管理访问这个联系人的权限。例如,
Administer Permissions
sample.contact.Contact@26807f: Id: 1; Name: John Smith; Email: john@somewhere.com
-R--- [2] dianne
|
Del
|
-RW-D [22] peter
|
Del
|
A---- [1] marissa
|
Del
|
Add Permission
Manage
说明:每一行记录包含有
3
列。
第一列表示权限,例如,“
-RW-D
”表示可读、可写、可删除。
第二列也表示权限,但它是以类似
unix
权限的数字表达。例如,“
[22]
”
,
表示可读、可写、可删除。
第三列是用户名称。
每一行记录后面都有一个“
Del
”链接。点击这个链接,可以删除掉指定用户对这个联系人信息的权限。
5.5.
用户可以为某个联系人信息添加权限。例如,
Add Permission
说明:权限是动态添加的。例如,上图中给用户
scott
增加了读联系人
John
的权限。那么
scott
马上就可以看到联系人
John
的信息了。