春のセキュリティのデモを構築するためのプロジェクト

春-cecurity説明:

春のセキュリティは、エンタープライズアプリケーションのための安全なアクセス制御宣言セキュリティフレームワークSpringベースのソリューションを提供することができます。これは、セット春豆のアプリケーションコンテキストで設定することができ提供フル使用春のIoC、DI(コントロール、DIの制御反転反転:依存性注入依存性注入)とAOP(アスペクト指向プログラミング)機能は、アプリケーションを提供します宣言セキュリティアクセス制御機能、作業のコードの重複をたくさん書いて、企業システムのセキュリティ制御を減らします。

このブログは、機能が含まれています。

  1)春・セキュリティ・デフォルト・ログインを使用して、基本的なバネ - セキュリティのデモを実施しています

  2)春 - セキュリティとログアウト機能に基づいてログインページのカスタマイズ

  3)バネセキュリティデータベースを使用してログイン認証のためのデータを取得します

1.新しいプロジェクトMavenの戦争のパッケージタイプを作成します。

  注:新しいMavenプロジェクトがエラーでWebエンジニアリング手法やプロジェクトをのpom.xmlに変換する必要がありますのweb.xmlが欠落していると、<failOnMissingWebXml> IS SETへの真の解決策を参照してください。

  https://www.cnblogs.com/sun-flower1314/p/11732915.html

2.春のセキュリティのpom.xml設定達人に追加されます

    <プロパティ>
        <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.security </ groupIdを>
            <たartifactId>春・セキュリティ・ウェブ</たartifactId>
            <バージョン> 4.1.0.RELEASE </バージョン>
        </依存関係>
        <依存>
            <groupIdを> org.springframework.security </ groupIdを>
            <たartifactId>春・セキュリティ設定</たartifactId>
            <バージョン> 4.1.0.RELEASE </バージョン>
        </依存関係>
        
    </依存関係>
    
    <ビルド>
        <プラグイン>
            <! -  Javaコンパイラプラグイン - >
            <プラグイン>
                <groupIdを> org.apache.maven.plugins </ groupIdを>
                <たartifactId>のmaven-コンパイラプラグイン</たartifactId>
                <バージョン> 3.2 </バージョン>
                <設定>
                    <ソース> 1.7 </ソース>
                    <対象> 1.7 </ターゲット>
                    <コード> UTF-8 </エンコーディング>
                </設定>
            </プラグイン>
            <プラグイン>
                <groupIdを> org.apache.tomcat.maven </ groupIdを>
                <たartifactId> tomcat7-のmaven-pluginの</たartifactId>
                <設定>
                    <! - ポートを指定します。 - >
                    <ポート> 9080 </ポート>
                    <! - 経路リクエスト - >
                    <パス> / </ path>を
                </設定>
            </プラグイン>
        </プラグイン>
    </構築>

 

3. / srcに/メイン/リソースの新しい春-のsecurity.xmlの構成ファイル。

  プロファイルは、過去とは若干異なるです注意するポイント:

  従来の接頭辞<豆> </豆>は、直接的な方法で、Beanのデフォルト

  今<です:豆豆>  </豆:豆>、 手間を省くために、最初にここで使用されるので、セキュリティのデフォルトとして設定されます。<XXXセキュリティ>デフォルトのxmlnsがあるため、基本的に、セキュリティです。

 

<?xml version = "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を使用-表現= "false" に>
        <インターセプト-URLパターン= "/ **" アクセス= "ROLE_USER" />
        <フォームのログイン/>    
    </ HTTP>
    <! - 認証マネージャ - >
    <認証マネージャ>
        <認証プロバイダ>
            <ユーザーサービス>
                <ユーザー名= "管理者" パスワード= "123456" 当局= "ROLE_USER" />
            </ユーザーサービス>
        </認証プロバイダ>
    </認証マネージャ>
</豆:豆>

 春-のsecurity.xmlプロファイルは、説明属性:

   <1> <HTTP>タグ:属性を使用-式の設定は、式を使用属性場合、サブラベルがインターセプト-URLアクセス= hasRoleも(「ROLE_USER」)を設定する必要があり、虚偽の表現SPELがそうでなければ有効に有効にするかどうかを示します

  <2> <インターセプト-URL>は、インターセプトURLを表し、属性パターンは=「/ *」、唯一のルートディレクトリリソースブロックを示し、サブディレクトリのリソースは、*インターセプト/、すべてのリソースが含まれていませんが、アクセスの構成プロパティの役割名を表し値はROLE_ [始まり]でなければなりません

  <3> <ログインフォーム/>は、  開いているフォーム機能を表し

  <4> <認証プロバイダ>を示す認証プロバイダ

  <5> <ユーザー>現在のシステムのログイン・ユーザー設定するには、タブ:ユーザ名の名前を、パスワードのパスワード、現在のユーザーの役割が当局に属し

 

4. web.xml構成ファイル、ファイル全体は次のようになります。

  これ含むロードクラスパス:春のsecurity.xmlファイルおよび追加安全フィルタを、前記springSecurityFilterChain固定名前を変更することはできません

<?xml version = "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値> クラスパス:春のsecurity.xml </ PARAM値>
     </コンテキスト-param>の
     <聞き手>
        <listener- クラス >
            org.springframework.web.context.ContextLoaderListener
        </ listener- クラス >
     </リスナー>
     <! - セキュリティ・フィルタ - >    
     <フィルタ>  
        <フィルタ名> springSecurityFilterChain </フィルタ名>           
        <フィルタ- クラス > org.springframework.web.filter.DelegatingFilterProxy </フィルタ- クラス >  
     </フィルタ>  
     <のfilter-mapping>  
        <フィルタ名> springSecurityFilterChain </フィルタ名>  
        <url-pattern> / * </のurl-pattern>  
     </フィルタマッピング>    
</ web-app>の

 

インタフェースのいずれかを書いていない場合でも、セキュリティは、デフォルトのログイン画面を見ることができ、アクセスにブラウザのアドレスを入力し、成功したスタート後、実行します。5.次にtomcat7、Mavenのでプロジェクトを開始するには、コマンドを起動します。

       

6.ユーザー名とパスワードを入力し、間違ったユーザー名とパスワードを入力した場合、あなたは次のインターフェイスを見ることができます:

           

正しいユーザパスワードを入力した後、それはconfigureがデフォルトのホーム・ページが存在しないので、あなたはWebアプリケーションでindex.htmlページを設定することができ、404エラーが表示されます。

          

 7.ユーザ定義のログインページ

システムのデフォルトのログインページを使用することはできません実際の開発、

  1)ログインページを構築

    ①form所定のフォームアクション=「/ログイン」メソッド=「ポスト」

    ②<入力>名前所定のユーザ入力=「ユーザ名」;パスワードボックス、所定名=「パスワード」

  すなわち、次のように:

  < フォームアクション= ' /ログイン ' メソッド=' POST ' > 
        < > 
            < TR > 
                < TD >用户名:</ TD > 
                < TD > < 入力タイプ='テキスト' = ' ユーザ名 ' の値='' > </ TD > 
            </ TR > 
            < TR > 
                < TD >密码</ TD >
                < TD > <入力タイプ= ' パスワード ' ='パスワード' /> </ TD > 
            </ TR > 
            < TR > 
                < TD COLSPAN = '2' > < 入力= "提出" タイプ= "提出" = "登陆"  / > </ TD > 
            </ TR > 
        </ テーブル> 
    </ フォーム>

 

   2)失敗したログインページの構築  login_error.html(内容は省略)

   3)再度ばねのsecurity.xml構成ファイルを変更

  割り当ては以下の向上:

  <1> ログインページは:ログインページを指定します。

  <2> 認証失敗-URL:認証ページへのジャンプを失敗指定します。

  <3> デフォルト・ターゲット・URL:ユーザに提示成功した認証と認可のデフォルト後のページを指定します。

  <4> CSRF無効= "true"を  关闭CSRF 

  <5> <ヘッダ> <フレーム -options方針= 「SAMEORIGIN」 /> </ヘッダ>を示し、別のページにページに埋め込まれてそこにiframeタグを 

  <6> <ジンバブエログアウト/>ログアウトすることを示し、およびアクションのために構成ログアウトボタン:/ログアウト

  <! - 次のページが傍受されることはありません - >
    <HTTPパターン= "/ login.htmlと" セキュリティ= "なし"> </ HTTP>
    <HTTPパターン= "/ login_error.html" セキュリティ= "なし"> </ HTTP>
    <! - ページのブロックルール - >
    <HTTPを使用-表現= "false" に>
        <インターセプト-URLパターン= "/ *" アクセス= "ROLE_USER" />
        <フォームのログインログイン・ページ= "/ login.htmlと" デフォルト -target-URL = "/ index.htmlを"認証失敗-URL = "/ login_error.html"常時使用デフォルト・ターゲット= "true"を / >    
        <CSRF無効= "真" />

      <! - <ヘッダ>

             <フレーム・オプション・ポリシー= "SAMEORIGIN" />

         </ヘッダ> - >

    <ログアウト/>

    </ HTTP>

 

  ここで、セキュリティ=「なし」は、ログイン・ページを設定していない場合は、次のエラーが発生し、2番目のリソースがブロックされていないことを示し

       

  csrf disabled="true"  关闭csrf ,如果不加会出现错误,CSRFCross-site request forgery)跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。

 

 

8、从数据库中匹配用户名和密码,而不用配置文件中的用户名和密码

   1)编写验证实现类,即继承Security自带的接口UserDetailsService

    LoginCheck.java

package com.hxc.securityDemo;

import java.util.ArrayList;
import java.util.List;

import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;

public class LoginCheck implements UserDetailsService {

    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
        
        //1.构建角色列表
        List<GrantedAuthority> grantedAuthorities = new ArrayList<GrantedAuthority>();
        grantedAuthorities.add(new SimpleGrantedAuthority("ROLE_ADMIN"));
        
        String password = "123456";
        //2.从数据库中查询数据进行检验
//        TbUser tbUser = userService.findOne(username);
//        if(tbUser == null) {
//            return null;
//        }
//        password = tbUser.getPassword();
        //...
        //new User 为Security包中的类,其中第一个参数为登录界面输入的用户名,第二个为后台参数的密码(即从数据库中查询),第三个为权限角色
        return new User(username, password, grantedAuthorities);    
        
    }
  
}

 

  2)在spring-security.xml配置文件中 将认证管理 修改为如下:

    <authentication-manager>
        <authentication-provider user-service-ref="userDetailService">            
        </authentication-provider>    
    </authentication-manager>
    
    <beans:bean id="userDetailService" class="com.hxc.securityDemo.LoginCheck"></beans:bean>

 

  

  自定义配置完成

 

 

 

おすすめ

転載: www.cnblogs.com/sun-flower1314/p/11727667.html