史郎は何である、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处理