﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-Vincent-随笔分类-Acegi</title><link>http://www.blogjava.net/lijiajia418/category/14736.html</link><description>Vicent's blog</description><language>zh-cn</language><lastBuildDate>Wed, 28 Feb 2007 03:40:59 GMT</lastBuildDate><pubDate>Wed, 28 Feb 2007 03:40:59 GMT</pubDate><ttl>60</ttl><item><title>acegi-security-sample-contacts-filter例子学习(二)</title><link>http://www.blogjava.net/lijiajia418/archive/2006/09/01/67083.html</link><dc:creator>Binary</dc:creator><author>Binary</author><pubDate>Fri, 01 Sep 2006 05:45:00 GMT</pubDate><guid>http://www.blogjava.net/lijiajia418/archive/2006/09/01/67083.html</guid><wfw:comment>http://www.blogjava.net/lijiajia418/comments/67083.html</wfw:comment><comments>http://www.blogjava.net/lijiajia418/archive/2006/09/01/67083.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lijiajia418/comments/commentRss/67083.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lijiajia418/services/trackbacks/67083.html</trackback:ping><description><![CDATA[
		<p>功能实现分析</p>
		<p>这个例子使用了HSQL做数据库，spring的AOP作为基础，使用Acegi做安全控制组件。<br />联系人管理的web应用在启动时候，会做一系列初始化动作：<br />1. 读取web.xml文件，</p>
		<p>2. 并解析文件里的内容。<br />a) context-param元素。<br />i. contextConfigLocation属性。这个属性定义了spring所需要的3个属性文件。它们分别是：applicationContext -acegi-security.xml、applicationContext-common-business.xml、 applicationContext-common-authorization.xml<br />ii. log4jConfigLocation属性。这个属性定义了log4j配置文件。</p>
		<p>b) filter元素。<br />这里定义了acegi的一个过滤器。Acegi的大部分过滤器都是这样配置的。使用FilterToBeanProxy组件，给它传递一个targetClass属性。这个targetClass必须实现javax.servlet.Filter接口。<br />这里配置的是FilterChainProxy。这个FilterChainProxy比较好用，可以为它定义一串filter属性。这些filter将会按照定义的顺序被调用。例如，<br />&lt;bean id="filterChainProxy" class="net.sf.acegisecurity.util.FilterChainProxy"&gt;<br />&lt;property name="filterInvocationDefinitionSource"&gt;<br />&lt;value&gt;<br />CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON<br />PATTERN_TYPE_APACHE_ANT<br />/**=httpSessionContextIntegrationFilter,authenticationProcessingFilter,basicProcessingFilter,rememberMeProcessingFilter,anonymousProcessingFilter,securityEnforcementFilter<br />&lt;/value&gt;<br />&lt;/property&gt;<br />&lt;/bean&gt;<br />这个过滤器的mapping是“/*”。<br />c) listener元素。<br />i. ContextLoaderListener。这个是Spring使用来加载根applicationcontext。并分别解析 applicationContext-acegi-security.xml、applicationContext-common- business.xml、applicationContext-common-authorization.xml等配置文件，把相关的对象初始化<br />iii. Log4jConfigListener。这个是spring用来初始化log4j组件的listener。<br />iv. HttpSessionEventPublisher。这个组件将发布HttpSessionCreatedEvent和HttpSessionDestroyedEvent事件给spring的applicationcontext。<br />d) servlet元素。<br />i. contacts。这里采用了spring的MVC框架， 所以这个servlet是spring MVC的一个核心控制器（org.springframework.web.servlet.DispatcherServlet）。这个servlet 启动时候，会从contacts-servlet.xml里面读取信息，并做相关的初始化。<br />v. remoting。也是spring MVC的一个核心控制器。与contacts不同，这个servlet主要是提供web services服务。这个servlet启动时候， 会从remoting-servlet.xml里面读取信息，并做相关的初始化。<br />e) taglib元素。这里定义了spring的标f) 签库。<br />3. 解析applicationContext-acegi-security.xml。<br />a) 过滤器链。定义了一个FilterChainProxy，b) 并指c) 定了一系列的过滤器链。httpSessionContextIntegrationFilter, authenticationProcessingFilter,basicProcessingFilter,rememberMeProcessingFilter,anonymousProcessingFilter,securityEnforcementFilter<br />d) 认证管理器。这个管理器由acegi提供。这个管理器需要一个providers参数。这个providers参数包含了提供系统认证的对象。<br />i. daoAuthenticationProvider。一般用户认证。<br />ii. anonymousAuthenticationProvider。匿名用户认证。<br />iv. rememberMeAuthenticationProvider。记住我认证。</p>
		<p>e) 密码加密。这里定义了一个acegi的Md5算法加密对象Md5PasswordEncoder。<br />f) 定义了一个jdbcDao实现类。这个类由acegi提供的net.sf.acegisecurity.providers.dao.jdbc.JdbcDaoImpl。这个对象需要一个dataSource的参数。<br />g) 定义daoAuthenticationProvider。这个对象由acegi提供。它有3个属性：<br />authenticationDao。这里指向前面定义的jdbcDao。<br />userCache。这里指向后面定义的user缓存对象。<br />passwordEncoder。这里指向前面定义的密码加密对象。<br />h) 用户缓存管理。<br />为了缓存user，这里使用spring的ehcache来缓存user。缓存机制：<br />i. 定义缓存管理器――CacheManager。这个对象是spring的EhCacheManagerFactoryBean对象<br />ii. 定义user缓存实际执行对象――UserCacheBackend。这个对象是spring的EhCacheFactoryBean。它有两个属性：<br />1. cacheManager。这里指向前面定义的缓存管理器。<br />2. cacheName。<br />iii. 定义user缓存――UserCache。它是acegi提供的EhCacheBasedUserCache对象。它有一个属性：<br />1. cache。这里指向的是前面定义的userCacheBackend。</p>
		<p>i) 定义接收来自DaoAuthenticationProvider的认证事件的listener――LoggerListener。<br />j) <br />4. 解析applicationContext-common-business.xml。<br />a) dataSource.<br />这里使用了spring的DriverManagerDataSource对象。这个对象是一个JDBC数据源的定义。<br />b) TransactionManager。这里使用spring的DataSourceTransactionManager对象。<br />c) 事务拦截器。这里使用spring的事务拦截器TransactionInterceptor。它有2个属性：<br />transactionManager。这个属性指向前面定义的TransactionManager。<br />transactionAttributeSource。这个属性里， 指定了ContactManager的各个方法的事务方面的要求。<br />d) DataSourcePopulator。<br />使用sample.contact.DataSourcePopulator对象，往HSQL里创建相关的表结构和数据。<br />实现原理：DataSourcePopulator 实现了接口 InitializingBean。其中afterPropertiesSet方法将在spring初始化DataSourcePopulator后被调用。<br />e) ContactDao。这里指向一个ContactDaoSpring对象。它继承spring的 JdbcDaoSupport，g) 并实现ContactDao接口。它是真正实现JDBC操作的对象。<br />h) ContactManager。这里使用的是spring的ProxyFactoryBean。它有2个属性：<br />i. ProxyInterfaces。代理接口：sample.contact.ContactManager</p>
		<p>ii. InterceptorNames。拦截器名称。可以有多个，iv. 这里包括：transactionInterceptor、contactManagerSecurity、contactManagerTarget。其中，v. transactionInterceptor是前面定义的事务拦截器。ContactManagerSecurity则是在 applicationContext-common-authorization.xml里定义的方法调用授权。<br />i) ContactManagerTarget。这里指向的是sample.contact.ContactManagerBackend对象。 ContactManagerBackend实现了ContactManager接口和InitializingBean接口。它有2个自定义属性： contactDao和basicAclExtendedDao。这里会调用ACL的API去做些创建权限和删除权限的工作。</p>
<img src ="http://www.blogjava.net/lijiajia418/aggbug/67083.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lijiajia418/" target="_blank">Binary</a> 2006-09-01 13:45 <a href="http://www.blogjava.net/lijiajia418/archive/2006/09/01/67083.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>acegi-security-sample-contacts-filter例子学习(一)</title><link>http://www.blogjava.net/lijiajia418/archive/2006/09/01/67082.html</link><dc:creator>Binary</dc:creator><author>Binary</author><pubDate>Fri, 01 Sep 2006 05:44:00 GMT</pubDate><guid>http://www.blogjava.net/lijiajia418/archive/2006/09/01/67082.html</guid><wfw:comment>http://www.blogjava.net/lijiajia418/comments/67082.html</wfw:comment><comments>http://www.blogjava.net/lijiajia418/archive/2006/09/01/67082.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lijiajia418/comments/commentRss/67082.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lijiajia418/services/trackbacks/67082.html</trackback:ping><description><![CDATA[
		<p>
				<span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体">这是一个</span>
				<span lang="EN-US" style="FONT-SIZE: 10.5pt" times="" new="" roman="">Acegi</span>
				<span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体">官方的例子。它以联系人的管理为例子，说明如何使用</span>
				<span lang="EN-US" style="FONT-SIZE: 10.5pt" times="" new="" roman="">Acegi</span>
				<span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体">作权限控制。这个例子包含在</span>
				<span lang="EN-US" style="FONT-SIZE: 10.5pt" times="" new="" roman="">acegi</span>
				<span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体">的包里面。下载地址：</span>
				<span lang="EN-US" style="FONT-SIZE: 10.5pt" times="" new="" roman="">
						<a href="http://prdownloads.sourceforge.net/acegisecurity/acegi-security-0.8.3.zip?download">http://prdownloads.sourceforge.net/acegisecurity/acegi-security-0.8.3.zip?download</a>。</span>
				<br />
		</p>
		<p>
				<font face="宋体">联系人管理说明了下列中心的<span lang="EN-US">Acegi安全控制能力: </span></font>
		</p>
		<ul>
				<li>
						<b>
								<span lang="EN-US">Role-based security</span>
						</b>
						<b>
								<span style="FONT-FAMILY: 宋体">（基于角色的安全）</span>
						</b>
						<span style="FONT-FAMILY: 宋体">――每个责任人都是某个角色的一员。而角色被用来限制对某些安全对象的访问。</span>
						<span lang="EN-US">
						</span>
				</li>
				<li>
						<b>
								<span lang="EN-US">Domain object instance security</span>
						</b>
						<b>
								<span style="FONT-FAMILY: 宋体">（域对象实例安全）</span>
						</b>
						<span style="FONT-FAMILY: 宋体">――合同，这个系统里的主要域对象，拥有一个访问控制列表（</span>
						<span lang="EN-US">ACL</span>
						<span style="FONT-FAMILY: 宋体">），用来指明谁允许读、管理和删除对象。</span>
						<span lang="EN-US">
						</span>
				</li>
				<li>
						<b>
								<span lang="EN-US">Method invocation security</span>
						</b>
						<b>
								<span style="FONT-FAMILY: 宋体">（方法调用安全）――</span>
						</b>
						<span style="FONT-FAMILY: 宋体">这个</span>
						<code>
								<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 黑体">ContactManager</span>
						</code>
						<span style="FONT-FAMILY: 宋体">服务层对象</span>
						<span style="FONT-FAMILY: 宋体">包含一些受保护的和公开的方法。</span>
						<span lang="EN-US">
						</span>
				</li>
				<li>
						<b>
								<span lang="EN-US">Web request security</span>
						</b>
						<b>
								<span style="FONT-FAMILY: 宋体">（</span>
								<span lang="EN-US">Web</span>
						</b>
						<b>
								<span style="FONT-FAMILY: 宋体">请求安全）</span>
						</b>
						<span style="FONT-FAMILY: 宋体">――这个“</span>
						<code>
								<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 黑体">/secure</span>
						</code>
						<span style="FONT-FAMILY: 宋体">”</span>
						<span lang="EN-US">URI</span>
						<span style="FONT-FAMILY: 宋体">路径被使用</span>
						<span lang="EN-US">Acegi</span>
						<span style="FONT-FAMILY: 宋体">安全保护，使得没有</span>
						<code>
								<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 黑体">ROLE_USER</span>
						</code>
						<span lang="EN-US">
						</span>
						<span style="FONT-FAMILY: 宋体">角色的用户无法访问。</span>
						<span lang="EN-US">. </span>
				</li>
				<li>
						<b>
								<span lang="EN-US">Security unaware application objects</span>
						</b>
						<b>
								<span style="FONT-FAMILY: 宋体">（保护未知的应用对象）</span>
						</b>
						<span style="FONT-FAMILY: 宋体">――受保护的对象与</span>
						<span lang="EN-US">Acegi</span>
						<span style="FONT-FAMILY: 宋体">之间没有明显的耦合或契约，所以它们没有察觉到安全是由</span>
						<span lang="EN-US">Acegi </span>
						<span style="FONT-FAMILY: 宋体">提供的。</span>
						<span lang="EN-US">* </span>
				</li>
				<li>
						<b>
								<span lang="EN-US">Security taglib usage</span>
						</b>
						<b>
								<span style="FONT-FAMILY: 宋体">（安全标签库使用）</span>
						</b>
						<span style="FONT-FAMILY: 宋体">――所有的</span>
						<span lang="EN-US">JSP</span>
						<span style="FONT-FAMILY: 宋体">使用</span>
						<span lang="EN-US">Acegi </span>
						<span style="FONT-FAMILY: 宋体">安全标签库来封装安全信息。</span>
						<span lang="EN-US">* </span>
				</li>
				<li>
						<b>
								<span lang="EN-US">Fully declarative security(</span>
						</b>
						<b>
								<span style="FONT-FAMILY: 宋体">完全声明式的安全</span>
								<span lang="EN-US">)</span>
						</b>
						<span style="FONT-FAMILY: 宋体">――每一个安全方面特性都是在</span>
						<span lang="EN-US">application context</span>
						<span style="FONT-FAMILY: 宋体">里面使用标准的</span>
						<span lang="EN-US">Acegi</span>
						<span style="FONT-FAMILY: 宋体">安全对象来配置的。</span>
						<span lang="EN-US"> * </span>
				</li>
				<li>
						<b>
								<span lang="EN-US">Database-sourced security data</span>
						</b>
						<b>
								<span style="FONT-FAMILY: 宋体">（支持数据库来源的安全数据）</span>
						</b>
						<span style="FONT-FAMILY: 宋体">――所有的用户、角色和</span>
						<span lang="EN-US">ACL</span>
						<span style="FONT-FAMILY: 宋体">信息都可以从一个兼容</span>
						<span lang="EN-US">JDBC</span>
						<span style="FONT-FAMILY: 宋体">的内存数据库获得。</span>
						<span lang="EN-US">
						</span>
				</li>
				<li>
						<b>
								<span lang="EN-US">Integrated form-based and BASIC authentication</span>
						</b>
						<b>
								<span style="FONT-FAMILY: 宋体">（集成基于表单和</span>
								<span lang="EN-US">BASIC</span>
						</b>
						<b>
								<span style="FONT-FAMILY: 宋体">验证）――</span>
						</b>
						<span style="FONT-FAMILY: 宋体">任何</span>
						<span lang="EN-US">BASIC</span>
						<span style="FONT-FAMILY: 宋体">验证头部被检测以及作为验证使用。默认使用基于表单的普通交互式验证。</span>
						<span lang="EN-US">
						</span>
				</li>
				<li>
						<b>
								<span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'">Remember-me services</span>
								<span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体">（记住我的服务）――</span>
						</b>
						<span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'"> Acegi</span>
						<span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体">安全的插件式的“</span>
						<span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'">remember-me</span>
						<span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体">”</span>
						<span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'">
						</span>
						<span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体">策略被演示。在登录表单里有一个相关的选择框与之对应。</span>
						<span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'">
						</span>
				</li>
		</ul>
		<p>
		</p>
		<span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'">
				<p>
						<span style="FONT-FAMILY: 宋体">联系人管理的业务功能描述：</span>
				</p>
				<p style="TEXT-INDENT: -21pt">
						<span lang="EN-US">1.<span><font size="2">1. </font></span></span>
						<span style="FONT-FAMILY: 宋体">每个用户登录后，可以看到一个联系人列表。例如，</span>
				</p>
				<h1>
						<span lang="EN-US" style="FONT-SIZE: 12pt">
								<font face="宋体">marissa's Contacts</font>
						</span>
				</h1>
				<table cellpadding="0" border="0">
						<tbody>
								<tr>
										<td style="BORDER-RIGHT: rgb(212,208,200); PADDING-RIGHT: 2.25pt; BORDER-TOP: rgb(212,208,200); PADDING-LEFT: 2.25pt; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: rgb(212,208,200); PADDING-TOP: 2.25pt; BORDER-BOTTOM: rgb(212,208,200); BACKGROUND-COLOR: transparent">
												<p>
														<b>
																<span lang="EN-US">id</span>
														</b>
												</p>
										</td>
										<td style="BORDER-RIGHT: rgb(212,208,200); PADDING-RIGHT: 2.25pt; BORDER-TOP: rgb(212,208,200); PADDING-LEFT: 2.25pt; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: rgb(212,208,200); PADDING-TOP: 2.25pt; BORDER-BOTTOM: rgb(212,208,200); BACKGROUND-COLOR: transparent">
												<p>
														<b>
																<span lang="EN-US">Name</span>
														</b>
												</p>
										</td>
										<td style="BORDER-RIGHT: rgb(212,208,200); PADDING-RIGHT: 2.25pt; BORDER-TOP: rgb(212,208,200); PADDING-LEFT: 2.25pt; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: rgb(212,208,200); PADDING-TOP: 2.25pt; BORDER-BOTTOM: rgb(212,208,200); BACKGROUND-COLOR: transparent">
												<p>
														<b>
																<span lang="EN-US">Email</span>
														</b>
												</p>
										</td>
								</tr>
								<tr>
										<td style="BORDER-RIGHT: rgb(212,208,200); PADDING-RIGHT: 2.25pt; BORDER-TOP: rgb(212,208,200); PADDING-LEFT: 2.25pt; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: rgb(212,208,200); PADDING-TOP: 2.25pt; BORDER-BOTTOM: rgb(212,208,200); BACKGROUND-COLOR: transparent">
												<p>
														<span lang="EN-US">1 </span>
												</p>
										</td>
										<td style="BORDER-RIGHT: rgb(212,208,200); PADDING-RIGHT: 2.25pt; BORDER-TOP: rgb(212,208,200); PADDING-LEFT: 2.25pt; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: rgb(212,208,200); PADDING-TOP: 2.25pt; BORDER-BOTTOM: rgb(212,208,200); BACKGROUND-COLOR: transparent">
												<p>
														<span lang="EN-US">John Smith </span>
												</p>
										</td>
										<td style="BORDER-RIGHT: rgb(212,208,200); PADDING-RIGHT: 2.25pt; BORDER-TOP: rgb(212,208,200); PADDING-LEFT: 2.25pt; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: rgb(212,208,200); PADDING-TOP: 2.25pt; BORDER-BOTTOM: rgb(212,208,200); BACKGROUND-COLOR: transparent">
												<p>
														<span lang="EN-US">john@somewhere.com </span>
												</p>
										</td>
										<td style="BORDER-RIGHT: rgb(212,208,200); PADDING-RIGHT: 2.25pt; BORDER-TOP: rgb(212,208,200); PADDING-LEFT: 2.25pt; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: rgb(212,208,200); PADDING-TOP: 2.25pt; BORDER-BOTTOM: rgb(212,208,200); BACKGROUND-COLOR: transparent">
												<p>
														<span lang="EN-US">
																<a href="http://localhost:8080/acegi-security-sample-contacts-filter/secure/del.htm?contactId=1">Del</a>
														</span>
												</p>
										</td>
										<td style="BORDER-RIGHT: rgb(212,208,200); PADDING-RIGHT: 2.25pt; BORDER-TOP: rgb(212,208,200); PADDING-LEFT: 2.25pt; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: rgb(212,208,200); PADDING-TOP: 2.25pt; BORDER-BOTTOM: rgb(212,208,200); BACKGROUND-COLOR: transparent">
												<p>
														<span lang="EN-US">
																<a href="http://localhost:8080/acegi-security-sample-contacts-filter/secure/adminPermission.htm?contactId=1">Admin Permission</a>
														</span>
												</p>
										</td>
								</tr>
								<tr>
										<td style="BORDER-RIGHT: rgb(212,208,200); PADDING-RIGHT: 2.25pt; BORDER-TOP: rgb(212,208,200); PADDING-LEFT: 2.25pt; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: rgb(212,208,200); PADDING-TOP: 2.25pt; BORDER-BOTTOM: rgb(212,208,200); BACKGROUND-COLOR: transparent">
												<p>
														<span lang="EN-US">2 </span>
												</p>
										</td>
										<td style="BORDER-RIGHT: rgb(212,208,200); PADDING-RIGHT: 2.25pt; BORDER-TOP: rgb(212,208,200); PADDING-LEFT: 2.25pt; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: rgb(212,208,200); PADDING-TOP: 2.25pt; BORDER-BOTTOM: rgb(212,208,200); BACKGROUND-COLOR: transparent">
												<p>
														<span lang="EN-US">Michael Citizen </span>
												</p>
										</td>
										<td style="BORDER-RIGHT: rgb(212,208,200); PADDING-RIGHT: 2.25pt; BORDER-TOP: rgb(212,208,200); PADDING-LEFT: 2.25pt; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: rgb(212,208,200); PADDING-TOP: 2.25pt; BORDER-BOTTOM: rgb(212,208,200); BACKGROUND-COLOR: transparent">
												<p>
														<span lang="EN-US">michael@xyz.com </span>
												</p>
										</td>
										<td style="BORDER-RIGHT: rgb(212,208,200); PADDING-RIGHT: 2.25pt; BORDER-TOP: rgb(212,208,200); PADDING-LEFT: 2.25pt; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: rgb(212,208,200); PADDING-TOP: 2.25pt; BORDER-BOTTOM: rgb(212,208,200); BACKGROUND-COLOR: transparent">
												<p>
												</p>
												<br />
										</td>
										<td style="BORDER-RIGHT: rgb(212,208,200); PADDING-RIGHT: 2.25pt; BORDER-TOP: rgb(212,208,200); PADDING-LEFT: 2.25pt; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: rgb(212,208,200); PADDING-TOP: 2.25pt; BORDER-BOTTOM: rgb(212,208,200); BACKGROUND-COLOR: transparent">
												<p>
												</p>
												<br />
										</td>
								</tr>
								<tr>
										<td style="BORDER-RIGHT: rgb(212,208,200); PADDING-RIGHT: 2.25pt; BORDER-TOP: rgb(212,208,200); PADDING-LEFT: 2.25pt; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: rgb(212,208,200); PADDING-TOP: 2.25pt; BORDER-BOTTOM: rgb(212,208,200); BACKGROUND-COLOR: transparent">
												<p>
														<span lang="EN-US">3 </span>
												</p>
										</td>
										<td style="BORDER-RIGHT: rgb(212,208,200); PADDING-RIGHT: 2.25pt; BORDER-TOP: rgb(212,208,200); PADDING-LEFT: 2.25pt; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: rgb(212,208,200); PADDING-TOP: 2.25pt; BORDER-BOTTOM: rgb(212,208,200); BACKGROUND-COLOR: transparent">
												<p>
														<span lang="EN-US">Joe Bloggs </span>
												</p>
										</td>
										<td style="BORDER-RIGHT: rgb(212,208,200); PADDING-RIGHT: 2.25pt; BORDER-TOP: rgb(212,208,200); PADDING-LEFT: 2.25pt; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: rgb(212,208,200); PADDING-TOP: 2.25pt; BORDER-BOTTOM: rgb(212,208,200); BACKGROUND-COLOR: transparent">
												<p>
														<span lang="EN-US">joe@demo.com </span>
												</p>
										</td>
										<td style="BORDER-RIGHT: rgb(212,208,200); PADDING-RIGHT: 2.25pt; BORDER-TOP: rgb(212,208,200); PADDING-LEFT: 2.25pt; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: rgb(212,208,200); PADDING-TOP: 2.25pt; BORDER-BOTTOM: rgb(212,208,200); BACKGROUND-COLOR: transparent">
												<p>
														<span lang="EN-US">
																<a href="http://localhost:8080/acegi-security-sample-contacts-filter/secure/del.htm?contactId=3">Del</a>
														</span>
												</p>
										</td>
										<td style="BORDER-RIGHT: rgb(212,208,200); PADDING-RIGHT: 2.25pt; BORDER-TOP: rgb(212,208,200); PADDING-LEFT: 2.25pt; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: rgb(212,208,200); PADDING-TOP: 2.25pt; BORDER-BOTTOM: rgb(212,208,200); BACKGROUND-COLOR: transparent">
												<p>
												</p>
												<br />
										</td>
								</tr>
								<tr>
										<td style="BORDER-RIGHT: rgb(212,208,200); PADDING-RIGHT: 2.25pt; BORDER-TOP: rgb(212,208,200); PADDING-LEFT: 2.25pt; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: rgb(212,208,200); PADDING-TOP: 2.25pt; BORDER-BOTTOM: rgb(212,208,200); BACKGROUND-COLOR: transparent">
												<p>
														<span lang="EN-US">4 </span>
												</p>
										</td>
										<td style="BORDER-RIGHT: rgb(212,208,200); PADDING-RIGHT: 2.25pt; BORDER-TOP: rgb(212,208,200); PADDING-LEFT: 2.25pt; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: rgb(212,208,200); PADDING-TOP: 2.25pt; BORDER-BOTTOM: rgb(212,208,200); BACKGROUND-COLOR: transparent">
												<p>
														<span lang="EN-US">Karen Sutherland </span>
												</p>
										</td>
										<td style="BORDER-RIGHT: rgb(212,208,200); PADDING-RIGHT: 2.25pt; BORDER-TOP: rgb(212,208,200); PADDING-LEFT: 2.25pt; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: rgb(212,208,200); PADDING-TOP: 2.25pt; BORDER-BOTTOM: rgb(212,208,200); BACKGROUND-COLOR: transparent">
												<p>
														<span lang="EN-US">karen@sutherland.com </span>
												</p>
										</td>
										<td style="BORDER-RIGHT: rgb(212,208,200); PADDING-RIGHT: 2.25pt; BORDER-TOP: rgb(212,208,200); PADDING-LEFT: 2.25pt; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: rgb(212,208,200); PADDING-TOP: 2.25pt; BORDER-BOTTOM: rgb(212,208,200); BACKGROUND-COLOR: transparent">
												<p>
														<span lang="EN-US">
																<a href="http://localhost:8080/acegi-security-sample-contacts-filter/secure/del.htm?contactId=4">Del</a>
														</span>
												</p>
										</td>
										<td style="BORDER-RIGHT: rgb(212,208,200); PADDING-RIGHT: 2.25pt; BORDER-TOP: rgb(212,208,200); PADDING-LEFT: 2.25pt; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: rgb(212,208,200); PADDING-TOP: 2.25pt; BORDER-BOTTOM: rgb(212,208,200); BACKGROUND-COLOR: transparent">
												<p>
														<span lang="EN-US">
																<a href="http://localhost:8080/acegi-security-sample-contacts-filter/secure/adminPermission.htm?contactId=4">Admin Permission</a>
														</span>
												</p>
										</td>
								</tr>
						</tbody>
				</table>
				<p>
						<span lang="EN-US">
								<a href="http://localhost:8080/acegi-security-sample-contacts-filter/secure/add.htm">
										<font face="宋体" size="3">Add</font>
								</a>
								<font face="宋体" size="3">
								</font>
						</span>
				</p>
				<p>
						<span style="FONT-FAMILY: 宋体">说明：用户没有权限访问的联系人信息，将不会显示。</span>
				</p>
				<p style="TEXT-INDENT: -21pt">
						<span lang="EN-US">2.<span><font size="2">2.</font></span></span>
						<span style="FONT-FAMILY: 宋体">用户可以增加新的联系人信息。</span>
				</p>
				<p style="TEXT-INDENT: -21pt">
						<span lang="EN-US">3.<span><font size="2">3.</font></span></span>
						<span style="FONT-FAMILY: 宋体">如果有删除权限，用户可以看到在联系人后面有一个“</span>
						<span lang="EN-US">Del</span>
						<span style="FONT-FAMILY: 宋体">”链接。用户可以点击这个链接来删除某个联系人信息。</span>
				</p>
				<p style="TEXT-INDENT: -21pt">
						<span lang="EN-US">4.<span><font size="2">4.</font></span></span>
						<span style="FONT-FAMILY: 宋体">如果有管理权限，用户可以看到在联系人后面有一个“</span>
						<span lang="EN-US">Admin Permission</span>
						<span style="FONT-FAMILY: 宋体">”链接。用户可以点击这个链接来管理访问这个联系人的权限。例如，</span>
				</p>
				<h1>
						<span lang="EN-US" style="FONT-SIZE: 12pt">
								<font face="宋体">Administer Permissions</font>
						</span>
				</h1>
				<p>
						<code>
								<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 黑体">sample.contact.Contact@26807f: Id: 1; Name: John Smith; Email: john@somewhere.com </span>
						</code>
				</p>
				<table cellpadding="0" border="0">
						<tbody>
								<tr>
										<td style="BORDER-RIGHT: rgb(212,208,200); PADDING-RIGHT: 2.25pt; BORDER-TOP: rgb(212,208,200); PADDING-LEFT: 2.25pt; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: rgb(212,208,200); PADDING-TOP: 2.25pt; BORDER-BOTTOM: rgb(212,208,200); BACKGROUND-COLOR: transparent">
												<p>
														<code>
																<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 黑体">-R--- [2] dianne </span>
														</code>
												</p>
										</td>
										<td style="BORDER-RIGHT: rgb(212,208,200); PADDING-RIGHT: 2.25pt; BORDER-TOP: rgb(212,208,200); PADDING-LEFT: 2.25pt; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: rgb(212,208,200); PADDING-TOP: 2.25pt; BORDER-BOTTOM: rgb(212,208,200); BACKGROUND-COLOR: transparent">
												<p>
														<span lang="EN-US">
																<a href="http://localhost:8080/acegi-security-sample-contacts-filter/secure/deletePermission.htm?contactId=1&amp;recipient=dianne">Del</a>
														</span>
												</p>
										</td>
								</tr>
								<tr>
										<td style="BORDER-RIGHT: rgb(212,208,200); PADDING-RIGHT: 2.25pt; BORDER-TOP: rgb(212,208,200); PADDING-LEFT: 2.25pt; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: rgb(212,208,200); PADDING-TOP: 2.25pt; BORDER-BOTTOM: rgb(212,208,200); BACKGROUND-COLOR: transparent">
												<p>
														<code>
																<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 黑体">-RW-D [22] peter </span>
														</code>
												</p>
										</td>
										<td style="BORDER-RIGHT: rgb(212,208,200); PADDING-RIGHT: 2.25pt; BORDER-TOP: rgb(212,208,200); PADDING-LEFT: 2.25pt; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: rgb(212,208,200); PADDING-TOP: 2.25pt; BORDER-BOTTOM: rgb(212,208,200); BACKGROUND-COLOR: transparent">
												<p>
														<span lang="EN-US">
																<a href="http://localhost:8080/acegi-security-sample-contacts-filter/secure/deletePermission.htm?contactId=1&amp;recipient=peter">Del</a>
														</span>
												</p>
										</td>
								</tr>
								<tr>
										<td style="BORDER-RIGHT: rgb(212,208,200); PADDING-RIGHT: 2.25pt; BORDER-TOP: rgb(212,208,200); PADDING-LEFT: 2.25pt; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: rgb(212,208,200); PADDING-TOP: 2.25pt; BORDER-BOTTOM: rgb(212,208,200); BACKGROUND-COLOR: transparent">
												<p>
														<code>
																<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 黑体">A---- [1] marissa </span>
														</code>
												</p>
										</td>
										<td style="BORDER-RIGHT: rgb(212,208,200); PADDING-RIGHT: 2.25pt; BORDER-TOP: rgb(212,208,200); PADDING-LEFT: 2.25pt; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: rgb(212,208,200); PADDING-TOP: 2.25pt; BORDER-BOTTOM: rgb(212,208,200); BACKGROUND-COLOR: transparent">
												<p>
														<span lang="EN-US">
																<a href="http://localhost:8080/acegi-security-sample-contacts-filter/secure/deletePermission.htm?contactId=1&amp;recipient=marissa">Del</a>
														</span>
												</p>
										</td>
								</tr>
						</tbody>
				</table>
				<p>
						<span lang="EN-US">
								<a href="http://localhost:8080/acegi-security-sample-contacts-filter/secure/addPermission.htm?contactId=1">
										<font face="宋体" size="3">Add Permission</font>
								</a>
								<font face="宋体" size="3">
								</font>
								<a href="http://localhost:8080/acegi-security-sample-contacts-filter/secure/index.htm">
										<font face="宋体" size="3">Manage</font>
								</a>
								<font face="宋体" size="3">
								</font>
						</span>
				</p>
				<p>
						<span style="FONT-FAMILY: 宋体">说明：每一行记录包含有</span>
						<span lang="EN-US">3</span>
						<span style="FONT-FAMILY: 宋体">列。</span>
				</p>
				<p>
						<span style="FONT-FAMILY: 宋体">第一列表示权限，例如，“</span>
						<code>
								<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 黑体">-RW-D</span>
						</code>
						<span style="FONT-FAMILY: 宋体">”表示可读、可写、可删除。</span>
				</p>
				<p>
						<span style="FONT-FAMILY: 宋体">第二列也表示权限，但它是以类似</span>
						<span lang="EN-US">unix</span>
						<span style="FONT-FAMILY: 宋体">权限的数字表达。例如，“</span>
						<span lang="EN-US">[22]</span>
						<span style="FONT-FAMILY: 宋体">”</span>
						<span lang="EN-US">, </span>
						<span style="FONT-FAMILY: 宋体">表示可读、可写、可删除。</span>
				</p>
				<p>
						<span style="FONT-FAMILY: 宋体">第三列是用户名称。</span>
				</p>
				<p>
						<span style="FONT-FAMILY: 宋体">每一行记录后面都有一个“</span>
						<span lang="EN-US">Del</span>
						<span style="FONT-FAMILY: 宋体">”链接。点击这个链接，可以删除掉指定用户对这个联系人信息的权限。</span>
				</p>
				<p style="TEXT-INDENT: -21pt">
						<span lang="EN-US">5.<span><font size="2">5.</font></span></span>
						<span style="FONT-FAMILY: 宋体">用户可以为某个联系人信息添加权限。例如，</span>
				</p>
				<h1>
						<span lang="EN-US" style="FONT-SIZE: 12pt">
								<font face="宋体">Add Permission</font>
						</span>
				</h1>
				<form>
						<table style="WIDTH: 95%" cellspacing="0" cellpadding="0" width="95%" bgcolor="#f8f8ff" border="0">
								<tbody>
										<tr>
												<td style="BORDER-RIGHT: rgb(212,208,200); PADDING-RIGHT: 3.75pt; BORDER-TOP: rgb(212,208,200); PADDING-LEFT: 3.75pt; PADDING-BOTTOM: 3.75pt; BORDER-LEFT: rgb(212,208,200); WIDTH: 20%; PADDING-TOP: 3.75pt; BORDER-BOTTOM: rgb(212,208,200); BACKGROUND-COLOR: transparent" width="20%">
														<p>
																<span lang="EN-US">Contact:</span>
														</p>
												</td>
												<td style="BORDER-RIGHT: rgb(212,208,200); PADDING-RIGHT: 3.75pt; BORDER-TOP: rgb(212,208,200); PADDING-LEFT: 3.75pt; PADDING-BOTTOM: 3.75pt; BORDER-LEFT: rgb(212,208,200); WIDTH: 60%; PADDING-TOP: 3.75pt; BORDER-BOTTOM: rgb(212,208,200); BACKGROUND-COLOR: transparent" width="60%">
														<p>
																<span lang="EN-US">sample.contact.Contact@1787005: Id: 1; Name: John Smith; Email: john@somewhere.com</span>
														</p>
												</td>
												<td style="BORDER-RIGHT: rgb(212,208,200); PADDING-RIGHT: 0cm; BORDER-TOP: rgb(212,208,200); PADDING-LEFT: 0cm; PADDING-BOTTOM: 0cm; BORDER-LEFT: rgb(212,208,200); PADDING-TOP: 0cm; BORDER-BOTTOM: rgb(212,208,200); BACKGROUND-COLOR: transparent" width="328">
														<p>
														</p>
														<br />
												</td>
										</tr>
										<tr>
												<td style="BORDER-RIGHT: rgb(212,208,200); PADDING-RIGHT: 3.75pt; BORDER-TOP: rgb(212,208,200); PADDING-LEFT: 3.75pt; PADDING-BOTTOM: 3.75pt; BORDER-LEFT: rgb(212,208,200); WIDTH: 20%; PADDING-TOP: 3.75pt; BORDER-BOTTOM: rgb(212,208,200); BACKGROUND-COLOR: transparent" width="20%">
														<p>
																<span lang="EN-US">Recipient:</span>
														</p>
												</td>
												<td style="BORDER-RIGHT: rgb(212,208,200); PADDING-RIGHT: 3.75pt; BORDER-TOP: rgb(212,208,200); PADDING-LEFT: 3.75pt; PADDING-BOTTOM: 3.75pt; BORDER-LEFT: rgb(212,208,200); WIDTH: 20%; PADDING-TOP: 3.75pt; BORDER-BOTTOM: rgb(212,208,200); BACKGROUND-COLOR: transparent" width="20%">
														<p>
																<span lang="EN-US">
																		<select name="recipient">
																				<option selected="">-- please select --</option>
																				<option value="dianne">dianne</option>
																				<option value="marissa">marissa</option>
																				<option value="peter">peter</option>
																				<option value="scott">scott</option>
																				<option value="ROLE_SUPERVISOR">ROLE_SUPERVISOR</option>
																				<option value="ROLE_USER">ROLE_USER</option>
																		</select>
																</span>
														</p>
												</td>
												<td style="BORDER-RIGHT: rgb(212,208,200); PADDING-RIGHT: 3.75pt; BORDER-TOP: rgb(212,208,200); PADDING-LEFT: 3.75pt; PADDING-BOTTOM: 3.75pt; BORDER-LEFT: rgb(212,208,200); WIDTH: 60%; PADDING-TOP: 3.75pt; BORDER-BOTTOM: rgb(212,208,200); BACKGROUND-COLOR: transparent" width="60%">
														<p>
														</p>
														<br />
												</td>
										</tr>
										<tr>
												<td style="BORDER-RIGHT: rgb(212,208,200); PADDING-RIGHT: 3.75pt; BORDER-TOP: rgb(212,208,200); PADDING-LEFT: 3.75pt; PADDING-BOTTOM: 3.75pt; BORDER-LEFT: rgb(212,208,200); WIDTH: 20%; PADDING-TOP: 3.75pt; BORDER-BOTTOM: rgb(212,208,200); BACKGROUND-COLOR: transparent" width="20%">
														<p>
																<span lang="EN-US">Permission:</span>
														</p>
												</td>
												<td style="BORDER-RIGHT: rgb(212,208,200); PADDING-RIGHT: 3.75pt; BORDER-TOP: rgb(212,208,200); PADDING-LEFT: 3.75pt; PADDING-BOTTOM: 3.75pt; BORDER-LEFT: rgb(212,208,200); WIDTH: 20%; PADDING-TOP: 3.75pt; BORDER-BOTTOM: rgb(212,208,200); BACKGROUND-COLOR: transparent" width="20%">
														<p>
																<span lang="EN-US">
																		<select name="permission">
																				<option value="0" selected="">None</option>
																				<option value="1">Administer</option>
																				<option value="2">Read</option>
																				<option value="16">Delete</option>
																				<option value="22">Read+Write+Delete</option>
																		</select>
																</span>
														</p>
												</td>
												<td style="BORDER-RIGHT: rgb(212,208,200); PADDING-RIGHT: 3.75pt; BORDER-TOP: rgb(212,208,200); PADDING-LEFT: 3.75pt; PADDING-BOTTOM: 3.75pt; BORDER-LEFT: rgb(212,208,200); PADDING-TOP: 3.75pt; BORDER-BOTTOM: rgb(212,208,200); BACKGROUND-COLOR: transparent">
														<p>
														</p>
														<br />
												</td>
										</tr>
								</tbody>
						</table>
				</form>
				<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">说明：权限是动态添加的。例如，上图中给用户</span>
				<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 'Times New Roman'">scott</span>
				<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">增加了读联系人</span>
				<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 'Times New Roman'">John</span>
				<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">的权限。那么</span>
				<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 'Times New Roman'">scott</span>
				<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">马上就可以看到联系人</span>
				<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 'Times New Roman'">John</span>
				<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">的信息了。</span>
		</span>
<img src ="http://www.blogjava.net/lijiajia418/aggbug/67082.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lijiajia418/" target="_blank">Binary</a> 2006-09-01 13:44 <a href="http://www.blogjava.net/lijiajia418/archive/2006/09/01/67082.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>