まず、私は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 "/>
カスタムプロファイルの完了後、認証モジュールをカスタマイズする必要がクラスを実装します
UserDetailsService
パッケージ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.UserDetailsService。 インポート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 実装UserDetailsService { プライベート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。 } }