菜鳥-手を取ってAcegiを実際のプロジェクトに応用することを教えます(1.2)


7)daoAuthenticationProviderは、簡単なデータベースベースの認証を行います.DaoAuthenticationProviderは、データベース内のアカウントパスワードを取得して照合します.成功すると、認証情報を含むAuthenticationオブジェクトがユーザーIDとともに返されます.そうしないと、認証に失敗し、AuthenticationExceptionが投げ出されます.
            class="org.acegisecurity.providers.dao.DaoAuthenticationProvider">
       
   

 
            class="org.acegisecurity.userdetails.memory.InMemoryDaoImpl">
       
           
                javaee=password,ROLE_SUPERVISOR
                qiuzj=password,ROLE_SUPERVISOR,disabled

       

   

inMemDaoImplは、メモリに基づいてユーザを格納する情報を提供し、inMemDaoImplはuserMapプロパティを使用して複数のユーザを定義する.ここでqiuzj状態はdisabled、すなわち失効状態である
javaee=password,ROLE_SUPERVISOR形式:ユーザー名=パスワード、カンマで区切られた複数のロール
qiuzj =password,ROLE_SUPERVISOR,disabled形式:ユーザー名=パスワード、カンマで区切られた複数のロール、ユーザーステータス
 
8)filterInvocationInterceptorはurlに転向する前にobjectDefinitionSourceで設定したユーザ権限情報をチェックする.まず、objectDefinitionSourceではURLへのアクセスに必要な属性情報が定義されています(ここでの属性情報は、accessDecisionManagerがどのvoterで投票するかを示すフラグにすぎません).その後、authenticationManagerは、自分のproviderを使用してユーザーの認証情報を検証します.最後に,ユーザがurlに認証とアクセスするために必要な属性を持つことに基づいて,自分のvoterを呼び出して投票し,アクセスを許可するかどうかを決定する投票者がいる.
        class="org.acegisecurity.intercept.web.FilterSecurityInterceptor">
       
       
       
                            CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON
                PATTERN_TYPE_APACHE_ANT
               /secure.jsp=ROLE_SUPERVISOR
            ]]>

       

   

objectDefinitionSourceは、Webリソースとロールの対応関係、すなわちURLの権限構成情報を定義します.異なるURLリソースに対応する権限を指定します.例:
/**/*.jpg=AUTH_ANONYMOUS,AUTH_USER
/**/*.gif=AUTH_ANONYMOUS,AUTH_USER
/**/*.png=AUTH_ANONYMOUS,AUTH_USER
/login.jsp*=AUTH_ANONYMOUS,AUTH_USER
/**=AUTH_USER
以上の構成指定AUTH_ANONYMOUS権限のユーザー(匿名ユーザー)は、画像リソースとログインページのみにアクセスできます.AUTH_USER権限のユーザーは、WEBリソースすべてにアクセスできます.
 
9)httpRequestAccessDecisionManager(投票通過ポリシーマネージャ)は、投票通過ポリシーを管理するために使用されます.Acegiは、3つの投票通過戦略の実現を提供します.
AffirmativeBased(少なくとも1人の投票者同意者が通過可能)、ConsensusBased(多数の投票者同意者が通過可能)、UnanimousBased(すべての投票者同意者が通過可能).このプログラムはAffirmativeBasedポリシーを採用し、「誰も反対しないで通過する」投票ポリシーを禁止します.
        class="org.acegisecurity.vote.AffirmativeBased">
       
       
           
               
           

       

   

投票はrolePrefixで設定されたvalueで始まる権限でなければなりません.AUTH_などです.ROLE_
    <bean id="roleVoter" class="org.acegisecurity.vote.RoleVoter">         <property name="rolePrefix" value="AUTH_"/>    </bean>

デフォルトでは、rolePrefix="ROLE_"
 
開発環境:
MyEclipse 5.0GA
Eclipse3.2.1
JDK1.5.0_10
tomcat5.5.23
acegi-security-1.0.7
Spring2.0
Jarパッケージ:
acegi-security-1.0.7.jar
Spring.jar
commons-codec.jar
さあ、第1編はこれで終わります.夜はもうすぐ2時です.もう寝る時間です.おやすみなさい.友达!