史郎エントリ(4)史郎のログイン認証ソースと戦略

著作権:著作権https://blog.csdn.net/qq_21046965/article/details/90083287手順猿jwang

序文

      この章では、ソースコード解析の四郎のログイン認証とログイン認証方針を説明します

方法

史郎のログイン認証ソースの解析

認証トークンのログインの方法1.件名

2. Subjectクラスは、実際に彼はSecurityManagerクラスのDelegatingSubjectを実装することで、検証を完了するために委託されるだけのインターフェーストークンです

3.セキュリティマネージャは、インターフェースの「心」として、実際のログイン方法がauthenticateメソッドDefaultSecurityManagerを呼び出すことによって検証される上に、クラスを達成するのを助けるために多くの仕事があります

 

4. authenticateメソッドは、親クラスAuthenticatingSecurityManagerによって行われます

 それはどこにバリの友人であるオーセンティケータの属性を持っています:

5.認証doAuthenticate方法は、検証を完了するために、デフォルトの実装であるModularRealmAuthenticator

  

単一領域を直接比較した場合、トークンデータ及び領域に、取得するために使用される6 doAuthenticateレルム方法は、(検証)を比較します。複数のレルムはAuthenticationStrategy(検証ポリシー)によって検証される必要があります場合。

二、史郎のログイン認証戦略

1.概要

3つの検証ポリシーの合計シロにおいて、マルチレルム条件を検証するために使用されます。

AllSuccessfulStrategy すべてが満たされている場合
AtLeastOneSuccessfulStrategy の少なくとも一つのケースに会います
FirstSuccessfulStrategy 少なくとも一つを満たす場合には、その後の検証レルムを停止するには

デフォルトの認証ポリシーがある AtLeastOneSuccessfulStrategy

2.コーディングを確認します

1)我々は2つの領域(IniRealm、JDBCレルム)を設定しました

プロファイルには、次のように変更します。

[main]
dataSource  = com.mchange.v2.c3p0.ComboPooledDataSource
dataSource.driverClass = oracle.jdbc.driver.OracleDriver
dataSource.jdbcUrl = jdbc:oracle:thin:@localhost:1521:orcl
dataSource.user = scott
dataSource.password = tiger
jdbcRealm = org.apache.shiro.realm.jdbc.JdbcRealm
iniRealm = cn.edu.ccut.test.MyRealm
# $相当于spring的依赖注入
jdbcRealm.dataSource = $dataSource
authenticationStrategy = org.apache.shiro.authc.pam.AllSuccessfulStrategy
securityManager.authenticator.authenticationStrategy = $authenticationStrategy
securityManager.realms = $jdbcRealm,$iniRealm

MYREALMは、次のように私のカスタムコードがあるIniRealmです。

package cn.edu.ccut.test;

import org.apache.shiro.realm.text.IniRealm;

/**
 * @Auther:jwang
 * @Date:2019/5/10
 * @Description:cn.edu.ccut.test
 * @Version 1.0
 **/
public class MyRealm extends IniRealm {

    public MyRealm(){
        this.setResourcePath("classpath:user.ini");
    }
}

彼は、ユーザー名とパスワードを設定するために使用user.ini、user.iniを使用しました。

我々は変化がないことを学んだ前にJDBCレルムれました:

 

当社の戦略がある。この時間  AllSuccessfulStrategy、つまり、すべての条件が満たされなければならない分野、我々は1234年入り、zhangsanによって検証、

SAのSAと検証が失敗しました

 

2)ここでは、戦略を変更  FirstSuccessfulStrategy

このとき、入力リージと5678も言っていない、成功したかどうかを確認することができますFirstSuccessfulStrategyが成功する最初のレルム成功です!これは特に重要です!

3)最後に、我々は、デフォルトのポリシーを試してみましたAtLeastOneSuccessfulStrategy

我々はまだリージと5678ログインを使用します。

サsaログインと使用:

 

おすすめ

転載: blog.csdn.net/qq_21046965/article/details/90083287