首页 > java > Acegi入门指南

Acegi入门指南

2007年7月13日 发表评论 阅读评论
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>
6.         最后的变化和核心就是怎么扩充第5和第6条,使系统能够灵活对用户进行认证和鉴权,并对受控资源方便的调整。扩展可以参考2.6.3 资源权限定义扩展
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,906 次阅读
原文链接:http://www.wenhq.com/article/view_86.html
欢迎转载,请注明出处:亲亲宝宝
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.