春のセキュリティカスタムユーザー認証

まず、私はxmlファイルを宣言する必要があります。私は、ユーザーの認証タイプをカスタマイズしたい、つまり、私は、データベースからクエリを所有したいです

<HTTPパターン= "/ *。HTML"セキュリティ= "なし" /> 
    <HTTPパターン= "/ CSS / **"セキュリティ= "なし" /> 
    <HTTPパターン= "/ IMG / **"セキュリティ=「なし"/> 
    <HTTPパターン=" / JS / ** "セキュリティ="なし"/> 
    <HTTPパターン=" /プラグイン/ ** "セキュリティ="なし"/> 
    <HTTPパターン=" /売主/ add.do 「セキュリティは、=」なし「/> 

    < -使用-表現:! SPELの発現を活性化するかどうかを設定は、デフォルト値はtrueではありません。- > 
    <HTTP-利用の表現= "偽"> 
        <! - 
            設定SpringSecurityインターセプト・パス(ルールをブロックする)
             *パターン:ブロックルールを設定します。   / * / *ルートパス(サブパスを含む)の下ですべてのリソースを表す(サブパスを含まない)ルートパスの下にあるすべてのリソースを表し
            *アクセス:

        オープンフォーム認証 
        <! -コンフィギュレーションのキャンセル- >
            =パラメータ・ユーザ名「ユーザ名」
            、パスワードパラメータ=「パスワード」
            ログインページ:ログインページ名は/で始まる
            デフォルト・ターゲット・URL:ログインページに成功ジャンプの後の
            ログイン処理-URL:提出のパスのデフォルト値を設定します"/ログイン"に変更することができます
        - > 
        <ログインログインページフォーム= "/ shoplogin.html"デフォルト・ターゲット-URL = "/ ADMIN / index.htmlを"常に使用デフォルト・ターゲット= "trueに" authentication- URL = -failure "/ shoplogin.html" /> 

        <! -チェックサムがCSRFを使用していない- > 
        <CSRF =無効"trueに" /> 

        <! -設定はページフレームをインターセプトしません- > 
        <ヘッダ> 
            <ポリシーオプション=フレーム"SAMEORIGIN" /> 
        <

        <ログアウトログアウト-URL = "/ログアウト"ログアウト成功-URL = "/ shoplogin.html" /> 
< -暗号化アルゴリズムBCryptPasswordEncoderを使用している場合- >!
    </ HTTP> 

    <! -配置认证管理器- > 
    <認証マネージャ> 
        <! -认证的提供者- > 
        <認証プロバイダのユーザー・サービス-REF = "userDetailService"> 
            <パスワードエンコーダREF = "passwordEncoder"> </パスワードエンコーダ> 
        </認証プロバイダ> 
    </認証マネージャ> 
< -配置自定义的认证类- >!
    <豆:豆ID = "userDetailService"クラス= "comの。 qingmu2.core.service.UserDetailServiceImpl "> 
        <豆:プロパティ名=" sellerService "REF = "sellerService"> </豆:プロパティ> 
    </豆:豆> 

    <豆:豆ID = "passwordEncoder"クラス="org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder "/>

カスタムプロファイルの完了後、認証モジュールをカスタマイズする必要がクラスを実装します

UserDetailsS​​ervice

パッケージcom.qingmu2.core.service。

輸入com.alibaba.dubbo.config.annotation.Reference。
輸入com.qingmu2.core.pojo.seller.Seller。
輸入org.springframework.beans.factory.annotation.Autowired;
輸入org.springframework.security.core.GrantedAuthority。
輸入org.springframework.security.core.authority.SimpleGrantedAuthority。
輸入org.springframework.security.core.userdetails.User。
輸入org.springframework.security.core.userdetails.UserDetails。
輸入org.springframework.security.core.userdetails.UserDetailsS​​ervice。
インポートorg.springframework.security.core.userdetails.UsernameNotFoundException; 

輸入はjava.util.ArrayList;
輸入java.util.HashMapを;
輸入はjava.util.HashSet。
輸入はjava.util.List; 

/ ** 
 *自定义的认证类
 * @Auther:qingmu 
 * @description:脚踏实地、只为出人头地
 * @Date:午前8時33分2019年5月31日に作成された
 * / 
パブリック クラス UserDetailServiceImpl 実装UserDetailsS​​ervice { 

    プライベートSellerServiceのsellerServiceを。

    パブリックUserDetailServiceImpl(){ 
    } 
    @Override 
    公共 UserDetails loadUserByUsername(文字列名)スローUsernameNotFoundExceptionを{ 
        出品者の出品者 = ; sellerService.findOne(ユーザー名)が
         IFヌル =!{売主)
             // ビジネスがによって監査されているかどうかを判断する。
            IF( "1" .equals(seller.getStatus())){
                 // コレクションを作成します許可格納するため 
                のHashSet <GrantedAuthority>当局= 新しい新しい HashSetの<>を(); 
                authorities.add(新新 SimpleGrantedAuthority(「ROLE_SELLER」));
                 // バックベースのユーザ認証にこの情報
                を返す 新しい新しいユーザー(ユーザー名、売り手。 getPasswordに()、当局); 
            } 
        }
        // 没有这个用户、则返回ヌル
        リターン はnull ; 
    } 

    公共UserDetailServiceImpl(SellerService sellerService){
         この .sellerService = sellerService。
    } 

    公共SellerService getSellerService(){
         戻りsellerService。
    } 

    公共 ボイドsetSellerService(SellerService sellerService){
         この .sellerService = sellerService。
    } 
}

 

おすすめ

転載: www.cnblogs.com/qingmuchuanqi48/p/10972116.html