Acegi入门指南
1. 先参考demo做个例子,注意用户名和密码输入域的名称,没有特殊需要先不做改动;
2. 用户的登陆;
<bean id="authenticationProcessingFilter"
class="org.acegisecurity.ui.webapp.AuthenticationProcessingFilter">
<property name="authenticationManager"
ref="authenticationManager" />
用户的登陆窗口
<property name="authenticationFailureUrl"
value="/login.html" />
登陆成功后的页面
<property name="defaultTargetUrl" value="/index.htm" />
用户名和密码提交的url
<property name="filterProcessesUrl"
value="/j_acegi_security_check" />
</bean>
3. 用户退出
<bean id="logoutFilter"
class="org.acegisecurity.ui.logout.LogoutFilter">
退出后的界面
<constructor-arg value="/index.htm" />
<!– URL redirected to after logout –>
<constructor-arg>
<list>
<bean
class="org.acegisecurity.ui.logout.SecurityContextLogoutHandler" />
</list>
</constructor-arg>
退出的链接url,即从会话中清除用户登陆信息
<property name="filterProcessesUrl" value="/j_acegi_logout"/>
</bean>
4. 访问资源的控制
其它的配置基本不变,只有粉色的代码是需要控制的访问资源,其它的是授权检查,所以先只用修改粉色的代码即可。
<bean id="filterInvocationInterceptor"
class="org.acegisecurity.intercept.web.FilterSecurityInterceptor">
<property name="authenticationManager"
ref="authenticationManager" />
<property name="accessDecisionManager">
<bean class="org.acegisecurity.vote.AffirmativeBased">
<property name="allowIfAllAbstainDecisions"
value="false" />
<property name="decisionVoters">
<list>
<bean
class="org.acegisecurity.vote.RoleVoter">
<property name="rolePrefix" value="AUTH_" />
</bean>
<bean
class="org.acegisecurity.vote.AuthenticatedVoter" />
</list>
</property>
</bean>
</property>
<property name="objectDefinitionSource">
<value>
CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON
PATTERN_TYPE_APACHE_ANT
/secure/extreme/**=ROLE_SUPERVISOR
/velocity/**=IS_AUTHENTICATED_REMEMBERED
/**=IS_AUTHENTICATED_ANONYMOUSLY
</value>
</property>
</bean>
5. 用户认证
InMemoryDaoImpl,这只是其中的一种认证方式,最简单的是使用范例中从文件中读取用户信息。
<bean id="userDetailsService" class="org.acegisecurity.userdetails.memory.InMemoryDaoImpl">
<property name="userProperties">
<bean class="org.springframework.beans.factory.config.PropertiesFactoryBean">
<property name="location" value="/WEB-INF/users.properties"/>
</bean>
</property>
</bean>
7. Url的匹配方式
Acegi中的FilterInvocationDefinitionMap提供两种实现:PATTERN_TYPE_ANT_PATH及 PATTERN_TYPE_PERL5。
其中PATTERN_TYPE_ANT_PATH使用apache Ant的路径格式来进行url的模式匹配,由于只有**, *, ?少数几个通配符,使用起来比较简单,在一个实用的基于角色的权限管理体系中,通常对要进行安全控制的资源是由管理员通过管理界面来定制的,所以推荐使用此方式。但是无法支持带参数的url,如/action.do?method=m这种url,在进行匹配之前,会先将? 后面的部分截去。
URLs匹配规则:
? matches one character单个字符</li>
* matches zero or more characters多字符</li>
** matches zero or more ‘directories’ in a path子目录
分类: java 5,907 次阅读
原文链接:http://www.wenhq.com/article/view_86.html欢迎转载,请注明出处:亲亲宝宝