SpringBoot学習 - 8、史郎SpringBoot学ぶ統合 - 7を、問題は「XXXX」が見つかりタイプ処理のいかなる豆をautowireませんでした。

史郎は何である、Baiduの百科事典を引用:Apacheの史郎は、認証、許可、パスワード、およびセッション管理のためのJavaセキュリティフレームワークを強力で使いやすいです。史郎のAPIの使用を理解しやすい、あなたが迅速かつ容易に、最小から最大のモバイルネットワークアプリケーションおよびエンタープライズアプリケーションに、任意のアプリケーションにアクセスすることができます。

たくさんの話をインターネット上史郎、以下のコードでは、いくつかのオンラインのブログ記事の統合からコードです

ここでは、統合段階であります

1、のpom.xml以下を追加します

< 依存性> 
    < のgroupId > org.apache.shiro </ のgroupId > 
    < たartifactId >シロスプリング</ たartifactId > 
    < バージョン> 1.3.2 </ バージョン> 
</ 依存>

デフォルトのページを記述する必要はありません場合は2は、設定パッケージには、次のクラス、標準の青色の線を追加します。

パッケージcom.jgui.config。

輸入com.jgui.shiro.CustomFormAuthenticationFilter;
輸入com.jgui.shiro.CustomRealm。
輸入org.apache.shiro.mgt.SecurityManager;
輸入org.apache.shiro.spring.web.ShiroFilterFactoryBean;
輸入org.apache.shiro.web.mgt.DefaultWebSecurityManager;
輸入org.springframework.beans.factory.annotation.Autowired;
輸入org.springframework.context.annotation.Bean;
輸入org.springframework.context.annotation.Configuration。

インポートは、javax.servlet.Filter;
輸入java.util.LinkedHashMap。
輸入java.util.Map;

@Configuration
パブリック クラスShiroConfig {
    @Autowired
    CustomRealm customRealm;
    @Autowired
    CustomFormAuthenticationFilter customAuthenticationFilter;
    @Bean(名 = "shiroFilter" 公衆ShiroFilterFactoryBean shiroFilter(セキュリティマネージャのSecurityManager){
        ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();
        shiroFilterFactoryBean.setSecurityManager(セキュリティマネージャ)。
shiroFilterFactoryBean.setLoginUrl( "/ログイン"); 
        shiroFilterFactoryBean.setUnauthorizedUrl( "/ notRole");
        地図 <文字列、文字列> = filterChainDefinitionMap 新しい新しいのLinkedHashMap <> ();
         // < - authcは:!すべてのURL彼らはを通じてアクセスする前に認証を受けなければなりません。アノン:すべてのURLが匿名アクセスを持つことができます- > 
        filterChainDefinitionMap.put( " / webjars / ** ""アノン" );
        filterChainDefinitionMap.put( "/ログイン"、 "アノン" );
        filterChainDefinitionMap.put( "/"、 "アノン" );
        filterChainDefinitionMap.put( "/フロント/ **"、 "アノン" );
        filterChainDefinitionMap.put( "/ API / **"、 "アノン" );
        // filterChainDefinitionMap.put( "/ハロー"、 "アノン"); 

        filterChainDefinitionMap.put( "/管理/ **"、 "authcは" );
        filterChainDefinitionMap.put(「/ ** /ユーザー」、「authcは」);
         // コードのメインラインは、それ以外の場合は、URLの残りすべての原因となります、設定されたすべての権限の最後でなければなりませんがインターセプトされ、認証が必要です 
        」(filterChainDefinitionMap.putを/ ** "" authcは" );
        shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap)。
        返すshiroFilterFactoryBeanを。

    }

    @豆
    公共CustomFormAuthenticationFilter customAuthenticationFilter(){
         リターン 新しいCustomFormAuthenticationFilter();
    }
    @豆
    公共のSecurityManagerのSecurityManager(){
        DefaultWebSecurityManager defaultSecurityManager = 新しいDefaultWebSecurityManager();
        defaultSecurityManager.setRealm(新しいCustomRealm());
        返すdefaultSecurityManagerを。
    }

    @豆
    公共CustomRealm customRealm(){
        CustomRealm customRealm = 新しいCustomRealm();
        返すcustomRealmを。
    }
}

我々は、フロント及びセパレータの後端部を使用する場合は3、不正アクセスインターフェースがジャンプする/コントローラに対応するログインページは、次にJSONを返す必要がある、次の実装方法であって

フィルタを追加

package com.jgui.shiro;

輸入lombok.extern.slf4j.Slf4j;
輸入net.minidev.json.JSONObject;
輸入org.apache.shiro.web.filter.authc.FormAuthenticationFilter;
輸入org.springframework.http.HttpStatus;

輸入javax.servlet.ServletRequest;
インポートのjavax.servlet.ServletResponse。
インポートのjavax.servlet.http.HttpServletResponse;
インポートのjava.io.Writer;

@ SLF4J
パブリック クラス CustomFormAuthenticationFilterは延びFormAuthenticationFilterを{
    @オーバーライド
    保護された ブールのisAccessAllowed(のServletRequest要求たServletResponse応答、オブジェクトmappedValue){
         戻り 
    }
    @オーバーライド
    保護された ブール onAccessDenied(のServletRequest要求たServletResponse応答)がスロー例外{
         場合(isLoginRequest(リクエスト、レスポンス)){
             場合(!isLoginSubmission(リクエスト、レスポンス)){
                 場合(log.isTraceEnabled()){
                    log.trace(「認証を必要とするパスにアクセスしようとしています。への転送」+
                            "認証URL [" + getLoginUrl()+ "]" )。
                }

                HttpServletResponseのHttpServletResponseの = (HttpServletResponseの)応答。
                httpServletResponse.setContentType( "アプリケーション/ JSON;のcharset = UTF-8" )。
                httpServletResponse.setStatus(HttpStatus.CONFLICT.value())。
                JSONObject JSON = 新しいJSONObject();
                json.put(「メッセージ」、「アクセスなし」)。
                ライターライター = httpServletResponse.getWriter();
                writer.write(json.toJSONString())。
                writer.flush();
                writer.close();
            } {
                 リターンexecuteLogin(リクエスト、レスポンス)。
            }
        }
        リターン はfalse ;
    }

}

4、次いでShiroConfig内で次のコードを追加

 // カスタムフィルタ 
        地図<文字列、フィルター> = filterMap shiroFilterFactoryBean.getFilters();

        filterMap.put( "restful_return" 、customAuthenticationFilter)。

        shiroFilterFactoryBean.setFilters(filterMap)。

下の位置

 

 

 5、これはJSONを返すための時間です。

 図6に示すように、上記基準ブログ

https://blog.csdn.net/weixin_33709219/article/details/91433272

https://blog.csdn.net/catoop/article/details/69210140

https://blog.csdn.net/cckevincyh/article/details/79629022

https://blog.csdn.net/nthack5730/article/details/51019516

前:

SpringBoot学习- 7、问题Could not autowire. No beans of 'xxxx' type found处理

おすすめ

転載: www.cnblogs.com/zhaogaojian/p/12203602.html