<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 10, 文章 - 0, 評(píng)論 - 7, 引用 - 0
    數(shù)據(jù)加載中……

    Acegi使用1

    首先要配置一個(gè)filter,這個(gè)filter用一個(gè)代理bean寫在了spring里面,其實(shí)根正常的filter沒(méi)有任何區(qū)別。

    代碼
    1<bean id="securityEnforcementFilter"   
    2    class="org.acegisecurity.intercept.web.SecurityEnforcementFilter">   
    3    <property name="filterSecurityInterceptor">   
    4        <ref local="filterInvocationInterceptor" />   
    5    </property>   
    6    <property name="authenticationEntryPoint">   
    7        <ref local="authenticationProcessingFilterEntryPoint" />   
    8    </property>   
    9</bean>  

     

    "filterInvocationInterceptor" 是一個(gè)攔截器,說(shuō)是攔截器,其實(shí)就是在filter里面執(zhí)行一下他的攔截方法,這里可沒(méi)有什么aop.
    authenticationEntryPoint 交驗(yàn)失敗的時(shí)候轉(zhuǎn)到的地方,為什么說(shuō)是地方,因?yàn)橥ㄟ^(guò)配置可以轉(zhuǎn)到其它的url甚至其它的協(xié)議下(http 轉(zhuǎn)到 https等等)
     
    代碼
     1<bean id="authenticationProcessingFilterEntryPoint"   
     2    class="org.acegisecurity.ui.webapp.AuthenticationProcessingFilterEntryPoint">   
     3    <property name="loginFormUrl">   
     4        <value>/error.security</value>   
     5    </property>   
     6    <property name="forceHttps">   
     7        <value>false</value>   
     8    </property>   
     9</bean>  
    10

     

    這個(gè)就是失敗的時(shí)候轉(zhuǎn)到的地方,我們可以配置url和是否使用https

     

    代碼
     1<bean id="filterInvocationInterceptor"   
     2    class="org.acegisecurity.intercept.web.FilterSecurityInterceptor">   
     3    <property name="authenticationManager">   
     4        <ref bean="authenticationManager" />   
     5    </property>   
     6    <property name="accessDecisionManager">   
     7        <ref local="httpRequestAccessDecisionManager" />   
     8    </property>   
     9    <property name="objectDefinitionSource">   
    10        <value>   
    11            CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON    
    12            PATTERN_TYPE_APACHE_ANT    
    13            /index.jsp=ROLE_ANONYMOUS,ROLE_USER    
    14            /j_acegi_switch_user=ROLE_SUPERVISOR   
    15            /login.security=ROLE_ANONYMOUS,ROLE_USER                /test.do=ROLE_CODER   
    16            /**.do*=ROLE_USER    
    17        </value>   
    18    </property>   
    19</bean>  

     

    這個(gè)就是前面提到的攔截器。簡(jiǎn)單解釋一下:
    authenticationManager 在acegi里面的主要作用就是管理維護(hù)用戶的權(quán)限角色等信息,比方說(shuō)想要用戶的ROLE就要在這里面拿了。里面配置了多種全縣的來(lái)源,可以從DAO里面來(lái)(就是數(shù)據(jù)庫(kù)里面),可以是cookies里面的,也可以是匿名的權(quán)限,每種權(quán)限都以一種Provider的形式提供:

    代碼
     1<bean id="authenticationManager"   
     2    class="org.acegisecurity.providers.ProviderManager">   
     3    <property name="providers">   
     4        <list>   
     5            <ref local="daoAuthenticationProvider" />   
     6            <ref local="anonymousAuthenticationProvider" />   
     7            <ref local="rememberMeAuthenticationProvider" />   
     8        </list>   
     9    </property>   
    10</bean>

     

    objectDefinitionSource在acegi里面就是配置權(quán)限信息,說(shuō)明哪一個(gè)url需要什么權(quán)限才能訪問(wèn),acegi默認(rèn)用<value>來(lái)表示,其實(shí)這正是acegi的不足之處,還好能夠補(bǔ)救。我來(lái)說(shuō)明一下:
    我們知道在spring里面<value>標(biāo)簽比較特殊,spring首先找到這個(gè)屬性的類型,然后把value里面的內(nèi)容以String的類型取出來(lái)(Spring做了一下包裝,為TypedString)。然后根據(jù)這個(gè)屬性的類型找他的Editer,然后用Editer來(lái)處理String為需要的類型。但是我們不希望用String來(lái)表達(dá)url,很明顯url里面有=就不會(huì)玩了。我們可以把這個(gè)信息寫到數(shù)據(jù)庫(kù)里面,然后讀取,這里面不說(shuō)了以前有一位高手已經(jīng)解釋過(guò)了。

    接下來(lái)就是httpRequestAccessDecisionManager了,AccessDecisionManager在acegi里面是決策者,就是根據(jù)你所擁有的權(quán)限和訪問(wèn)URL需要的權(quán)限來(lái)決定你到底能不能訪問(wèn)。

     

    代碼
     1<bean id="httpRequestAccessDecisionManager"   
     2    class="org.acegisecurity.vote.AffirmativeBased">   
     3    <property name="allowIfAllAbstainDecisions">   
     4        <value>false</value>   
     5    </property>   
     6    <property name="decisionVoters">   
     7        <list>   
     8            <ref bean="roleVoter" />   
     9        </list>   
    10    </property>   
    11</bean>  

     

    決策者里面是投票者,這個(gè)上面已經(jīng)解釋過(guò)了,一個(gè)投票者校驗(yàn)一種權(quán)限。整個(gè)流程已經(jīng)說(shuō)完了。

    posted on 2007-05-20 12:41 LiuTing 閱讀(410) 評(píng)論(0)  編輯  收藏 所屬分類: 身份認(rèn)證管理


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲精品亚洲人成在线观看麻豆| 亚洲色图综合在线| 一个人免费播放在线视频看片| 久久不见久久见免费影院| 亚洲成人免费网址| 亚洲一区二区三区免费在线观看 | 亚洲youwu永久无码精品| 国产在线a免费观看| 亚洲午夜在线播放| 产传媒61国产免费| 精品国产亚洲男女在线线电影 | 亚洲视频在线观看免费视频| 国产综合成人亚洲区| 国产精品嫩草影院免费| 久久精品亚洲视频| 131美女爱做免费毛片| 亚洲伊人久久大香线焦| 女人18毛片a级毛片免费视频| 日韩亚洲综合精品国产| 亚洲第一页日韩专区| 中国人免费观看高清在线观看二区| 亚洲韩国精品无码一区二区三区 | 久久久久亚洲国产| 免费很黄很色裸乳在线观看| 香蕉国产在线观看免费| 久久精品国产亚洲综合色| 1000部免费啪啪十八未年禁止观看 | 国产偷伦视频免费观看| 亚洲精品日韩专区silk| 成人永久免费福利视频网站| 国产精品hd免费观看| 久久久久无码精品亚洲日韩| 尤物视频在线免费观看| 亚洲AV无码一区二区二三区软件| 91短视频免费在线观看| 亚洲avav天堂av在线网毛片| 无码专区永久免费AV网站| 亚洲美女免费视频| 国产成人aaa在线视频免费观看| 国产免费久久久久久无码| 亚洲国产午夜精品理论片 |