はじめに:
我々javaweb一部、およびフィルターまたはインターセプターを使用してSSM部分の前に、着陸を制御しない、今は春Secutriy着陸コントロールを使用します
A、春のセキュリティの小さなデモ
1、新しいプロジェクト、輸入依存度のMavenを作成します
<プロパティ> <spring.version> 4.2.4.RELEASE </spring.version> </プロパティ> <依存性> <依存性> <のgroupId> org.springframework </のgroupId> <たartifactId>ばねコア</たartifactId> <バージョン> $ {spring.version} </バージョン> </依存> <依存性> <のgroupId> org.springframework </のgroupId> <たartifactId>ばねウェブ</たartifactId> <バージョン> $ {spring.version} </バージョン> </依存関係> <依存> <groupIdを> org.springframework </ groupIdを> <たartifactId>ばねwebmvc </たartifactId> <バージョン> $ {spring.version} </バージョン> </依存> <依存性> <のgroupId> org.springframework </のgroupId> <たartifactId>ばねコンテキストサポート</たartifactId> <バージョン> $ {spring.version} </バージョン> </依存> <依存性> <のgroupId> org.springframework </ groupId> <たartifactId>ばね試験</たartifactId> <バージョン> $ {spring.version} </バージョン> </依存> <依存性> <のgroupId> org.springframework </のgroupId> <たartifactId>ばねJDBC </たartifactId> <バージョン> $ {spring.version} </バージョン> </依存> <依存性> <groupIdを> org.springframework.security </ groupIdを> <たartifactId>春・セキュリティ・ウェブ</たartifactId> <バージョン> 4.1.0.RELEASE </バージョン> </依存関係> <依存> <groupIdを> org.springframework.security </ groupIdを> <たartifactId>春・セキュリティ設定</たartifactId> <バージョン> 4.1.0.RELEASE </バージョン> </依存> <依存性> <groupIdを>のjavax.servlet </のgroupId> <たartifactId>サーブレットAPI </たartifactId> <バージョン> 2.5 </バージョン> <スコープ>提供</スコープ> </依存> </依存関係> <ビルド> <プラグイン> <! - javaの编译插件- > <プラグイン> <groupId> org.apache.maven.plugins </ groupIdを> <たartifactId>のmaven-コンパイラプラグイン</たartifactId> <バージョン> 3.2 </バージョン>バージョン> 3.2 </ version>の <設定> <ソース> 1.7 </ソース> <ターゲット> 1.7 </ターゲット> <符号化> UTF-8 </エンコーディング> </構成> </プラグイン> <プラグイン> <のgroupId> org.apache.tomcat.maven </のgroupId> <たartifactId> tomcat7-maven-プラグイン</たartifactId> <設定> <! -指定端口- > <ポート> 9090 </ポート> <! -请求路径- > <パス> / </パス> </ configuration>の </プラグイン> </プラグイン> </ビルド>
2、web.xml構成ファイル
<xmlのバージョン= "1.0"エンコード= "UTF-8"?> の<web-appのxmlns:XSI = "http://www.w3.org/2001/XMLSchema-instance" のxmlns = "のhttp:// javaのsun.comの/ XML / NS / JavaEEの" XSI:のschemaLocation =" http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5 「.XSD バージョン= "2.5"> <! -加载春-セキュリティを配置文件- > <コンテキスト-param>の の<param-name>のcontextConfigLocation </ PARAM名> の<param-value>のクラスパス:春-セキュリティ。 XML </ PARAM値> </コンテキスト-param>の <リスナー> <リスナクラス> org.springframework.web.context.ContextLoaderListener </リスナクラス> </リスナー> <フィルタ> <フィルタ名> springSecurityFilterChain </フィルタ名> <フィルタクラス> org.springframework.web.filter.DelegatingFilterProxy </フィルタクラス> </フィルタ> <フィルタマッピング> <フィルタ名> springSecurityFilterChain </フィルタ-name> の<url-pattern> / * </のurl-pattern> </のfilter-mapping> </ web-app>の
図3に示すように、バネのsecurity.xmlプロファイル
インターセプト-urlが傍受ページを表し
/ *下位レベルのディレクトリが含まれていないだけで、このディレクトリを含め、ディレクトリ内のリソースを表します
/ **ディレクトリとディレクトリレベルのリソースのすべてのサブディレクトリことを示しています
フォーム・ログイン着陸はオープン形式です
使用-式は春の式言語(SPEL)を使用するかどうかで、デフォルトはtrueでオンになっている場合、コンフィギュレーションの傍受は形式で記述する必要があります
ログイン処理-urlは=「/ login2」異なるランディングページを指定します
ユーザ名パラメータ=「」パスワードパラメータ=「」に書き換え、ユーザーのログイン名と属性名
<xmlのバージョン= "1.0"エンコード= "UTF-8"?> <豆:豆のxmlns = "http://www.springframework.org/schema/security" のxmlns:豆=「HTTP://www.springframework .ORG /スキーマ/ビーンズ"
のxmlns:XSI =" http://www.w3.org/2001/XMLSchema-instance " のxsi:schemaLocationの=" http://www.springframework.org/schema/beans HTTP:// www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security.xsd「> < ! -ページブロックルールがSPELの適用のために、インターセプトページの使用式を表し、デフォルトはtrueに、 - > <HTTPを使用-表現= "偽"> の<url-patternインターセプト= "/ **"アクセス= "ROLE_USER」/> <! -オープンフォーム・ログイン、使用-式がtrueの場合、ログイン処理-URL =に設定されている場合、 "/ login2" 異なるランディングページを指定するために使用される- >-オープンフォーム・ログイン、使用-式がtrueに設定されている場合は、ログイン加工-URL = 「/ login2」異なるランディングページを指定するために使用される- > <フォームのログイン/> </ HTTP> <! -認証マネージャ- > <認証マネージャ> <認証プロバイダ> <ユーザーサービス> <! -あなたはロールROLE_USERの役割の数を追加することができ、ユーザーは上記なければならない- > <ユーザー=名"ADMIN"、パスワード= "123456"当局は= "ROLE_USERを持つユーザ" /> </ -サービス利用者> </認証プロバイダ> </認証マネージャ> </豆:豆>
第二に、私たち自身のログイン画面を作成します
デフォルトは、私達のログイン画面に直接ジャンプしてログインしていない、ログインの失敗は、ページにジャンプすることができませんでした
1、创建login.html,login_error.html
<!DOCTYPE HTML> <HTML> <HEAD> <METAのcharset = "UTF-8"> <タイトル>ログイン</ TITLE> </ HEAD> <BODY> - -私の着陸システムへようこそ <フォームアクション= "/ログイン"メソッド= "ポスト "> ユーザ名:<入力名= "ユーザ名" > <BR> パスワード:<INPUT名= "パスワード"> <BR> <ボタン>ログイン</ボタン> </フォーム> < / BODY> </ HTML>
<!DOCTYPE HTML> <HTML> <HEAD> <METAのcharset = "UTF-8"> <タイトル>ホーム</ TITLE> </ HEAD> <BODY> ユーザー名またはパスワードが間違っ~~~ </ BODY> </ HTML>
図2に示すように、バネのsecurity.xmlプロファイル変更
セキュリティ=「none」に 設定し、このリソースが傍受されていません。
ページ-ログイン:指定ログインページ。
障害のurl-認証:認証失敗のページへのジャンプを指定します。
ターゲットURLデフォルト:成功の認証と承認のデフォルトをユーザに提示した後、ページを指定します。
無効= "true" にCSRF
<xmlのバージョン= "1.0"エンコード= "UTF-8"?> <豆:豆のxmlns = "http://www.springframework.org/schema/security" のxmlns:豆 = "のhttp://www.springframework .ORG /スキーマ/豆"のxmlns:XSI = "http://www.w3.org/2001/XMLSchema-instance" のxsi:schemaLocationの =" http://www.springframework.org/schema/beansのhttp:// www.springframework.org/schema/beans/spring-beans.xsd ます。http:// www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security.xsd 「> < ! -以下界面不进行拦截- > <HTTPパターン= " /login.html "セキュリティ="なし"> </ HTTP> <HTTPパターン= "/ login_error.html"セキュリティ= "なし"> </ HTTP>/ HTTP> <! -のconfigureブロックルール- > <HTTP-利用の表現= "偽"> <! -インターセプトすべての要求は、ログインページにアクセスしてください。役割設定- > <URLパターンインターセプト= "/ *"アクセス= "ROLE_USERを持つユーザーが" /> < -体のログインログイン・ページ = "/ login.htmlと" デフォルト・ターゲット-URL = "/ index.htmlを" authentication- URL-失敗 = "/ login_error.html" /> "真の" <CSRF =無効/> </ HTTP> <! -認証マネージャ- > <認証マネージャ> <認証プロバイダ> < -サービス-ユーザ> <! - ROLE_USERは、ユーザーが役割上記なければならない、役割の数を追加することができます- > </認証マネージャ> </豆:豆>
あなたはログオンページのセキュリティ=「なし」を設定しない場合、次のエラーが発生します。
注意:
私は、操作自身が「/」を報告します上記のエラーを忘れてランディングページの下部にある「login.htmlと」を書いて、私はあなたが注意を払う願っています
この時間の後にページへのアクセスは、私たち自身の創造のログイン画面にジャンプし、そして唯一の正しいユーザー名とパスワードを入力ページにジャンプしますでしょうinex.html