ホームページ バックエンド開発 PHPチュートリアル yii で新しいユーザー認証を追加する方法

yii で新しいユーザー認証を追加する方法

Jun 15, 2018 pm 04:20 PM
yii ユーザ認証

この記事は、Yii に新しいユーザー認証を追加する方法の詳細な分析と紹介です。必要な方は参照してください。

1 なぜ追加する必要があるのか​​。新しいユーザーですか? 検証:
Web サイトのバックエンドとフロントエンドを同じ Yii アプリケーション内に構築したいためです。ただし、フロントエンドにはメンバー管理センターも含まれており、2 つのユーザー検証はまったく異なります。 2 つの異なるログイン ページが必要であり、ユーザー情報は異なる Cookie またはセッションに保存する必要があるため、ユーザー認証をアプリケーションに追加する必要があります
2.yii ユーザー認証:
#。
##ユーザー検証をカスタマイズする前に、まず yii の検証および認可メソッドを理解する必要があります。
ユーザーを検証するには、検証ロジックを備えた検証クラスを定義する必要があります。 yii IUserIdentity インターフェースでは、異なるクラスが異なる検証メソッドを実装できます。通常、Yii はユーザー名とパスワードを検証するために使用される CUserIdentity クラスを、継承後に書き換える必要があります。 Authenticate() メソッドを使用して独自の
検証メソッドを実装します。具体的なコードは次のとおりです。
Php code

class UserIdentity extends CUserIdentity  
{  
    private $_id;  
    public function authenticate()  
    {  
        $record=User::model()->findByAttributes(array('username'=>$this->username));  
        if($record===null)  
            $this->errorCode=self::ERROR_USERNAME_INVALID;  
        else if($record->password!==md5($this->password))  
            $this->errorCode=self::ERROR_PASSWORD_INVALID;  
        else 
        {  
            $this->_id=$record->id;  
            $this->setState('title', $record->title);  
            $this->errorCode=self::ERROR_NONE;  
        }  
        return !$this->errorCode;  
    }  
    public function getId()  
    {  
        return $this->_id;  
    }  
}
ログイン後にコピー

ユーザーがログインすると、次のコードが呼び出されます。 :

Php コード

// 使用提供的用户名和密码登录用户  
$identity=new UserIdentity($username,$password);  
if($identity->authenticate())  
    Yii::app()->user->login($identity);  
else 
    echo $identity->errorMessage;
ログイン後にコピー


ユーザーが終了すると、次のコードが呼び出されます:
Php コード

// 注销当前用户  
Yii::app()->user->logout(); 
 其中的user是yii的一个components.需要在protected/config/main.php中定义
ログイン後にコピー

Php コード

'user'=>array(  
    // enable cookie-based authentication  
    'allowAutoLogin'=>true,  
        'loginUrl' => array('site/login'),  
),
ログイン後にコピー

Yii では、user はデフォルトで CWebUser クラスのインスタンスであるため、ここではユーザーのログイン検証を実装しました。ただし、ユーザーがログインしているかどうかに関係なく、ユーザーのすべてのアクションにアクセスできるようになりました。次のステップは、ユーザーのアクセスを許可することです。アクセス制御フィルターを見てみましょう。アクセス制御を備えた単純なコントローラー:

Php コード

class AdminDefaultController extends CController  
{   
    public function filters()  
        {  
            return array('accessControl');  
        }  
        public function accessRules()  
        {  
            return array(  
                array(  
                    'allow',  
                    'users' => array('@'),  
                ),  
                array(  
                    'deny',  
                    'users' => array('*')  
                ),  
            );  
        }  
}
ログイン後にコピー

filters メソッドで特定のフィルターを設定すると、filters メソッドによって返される配列に accessControl パラメーターがあることがわかります。は、CController クラスの filterAccessControl メソッドです。

Php コード

public function filterAccessControl($filterChain)  
{  
    $filter=new CAccessControlFilter;  
    $filter->setRules($this->accessRules());  
    $filter->filter($filterChain);  
}
ログイン後にコピー

内部に新しい CAccessControlFilter インスタンスを作成し、setRules.
$ のときに accessRules() メソッドによって返されるパラメータを渡します。 filter->filter($filterChain) その後、他のフィルターの呼び出しを続けます。

そして、すべての特定の承認ルールは、accessRules:

Php code

public function accessRules()  
    {  
        return array(  
            array('deny',  
                'actions'=>array('create', 'edit'),  
                'users'=>array('?'),  
            ),  
            array('allow',  
                'actions'=>array('delete'),  
                'roles'=>array('admin'),  
            ),  
            array('deny',  
                'actions'=>array('delete'),  
                'users'=>array('*'),  
            ),  
        );  
    }
ログイン後にコピー

で定義されます。特定のルールについては、yii マニュアルを参照してください。


3. 新しい検証システムを追加します:
最初に、CWebUser:
Php コードから CAdminUser を継承します。

class CAdminWebUser extends CWebUser  
{  
    public $loginUrl = array('admin/admin/login');  
}
ログイン後にコピー

これはコンポーネントに配置されます

グローバル アプリケーションの場合は、protected/config/main.php:


Php コードのコンポーネント セクションを渡します

'user'=>array(  
    // enable cookie-based authentication  
        'class' => 'CAdminUser',  
    'allowAutoLogin'=>true,  
       'loginUrl' => array('site/login'),  
),
ログイン後にコピー

モジュール内にある場合は、モジュール クラスの init メソッドに次のコードを追加します。

Php コード

$this->setComponents(array(  
       'adminUser' => array(  
                'class' => 'CAdminWebUser',  
                'allowAutoLogin' => false,  
        )  
));
ログイン後にコピー

最終呼び出しメソッド

Php コード

//全局应用  
Yii::app()->getComponent('adminUser');  
//在模块中  
Yii::app()->controller->module->getComponent('adminUser');
ログイン後にコピー

しかし、これだけでは不十分です。別のユーザーの検証と承認を実装するには、コントローラーのフィルターも変更する必要があります。 #最初のステップはフィルターをカスタマイズすることです:

Php コード

class CAdminAccessControlFilter extends CAccessControlFilter  
{  
    protected function preFilter($filterChain)  
    {  
        $app=Yii::app();  
        $request=$app->getRequest();  
        $user = Yii::app()->controller->module->getComponent('adminUser');  
        $verb=$request->getRequestType();  
        $ip=$request->getUserHostAddress();  
        foreach($this->getRules() as $rule)  
        {  
            if(($allow=$rule->isUserAllowed($user,$filterChain->controller,$filterChain->action,$ip,$verb))>0) // allowed  
                break;  
            else if($allow<0) // denied  
            {  
                $this->accessDenied($user);  
                return false;  
            }  
        }  
        return true;  
    }  
}
ログイン後にコピー

CController クラスの filterAccessController メソッドを書き直します
Php コード

public function filterAccessControl($filterChain)  
{  
    $filter = new CAdminAccessControlFilter();  
    $filter->setRules($this->accessRules());  
    $filter->filter($filterChain);  
}  
//在这里我们使用自定义的filter类替换了原来的filter
ログイン後にコピー

OK、このコントローラーの accessRules() で adminUser の承認を指定できます。
上記はこの記事の全内容です。その他の関連コンテンツについては、この記事が役立つことを願っています。 、PHP 中国語 Web サイトに注意してください。

関連する推奨事項:

PHP の Yii フレームワークでのログイン機能の実装について

yii2 の変更方法.0 ユーザー ログインに使用されるユーザー テーブルは別のテーブルです


以上がyii で新しいユーザー認証を追加する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHP フレームワーク Yii を使用して可用性の高いクラウド バックアップ システムを開発する方法 PHP フレームワーク Yii を使用して可用性の高いクラウド バックアップ システムを開発する方法 Jun 27, 2023 am 09:04 AM

クラウド コンピューティング テクノロジの継続的な発展により、データのバックアップはすべての企業が行う必要のあるものになりました。この文脈では、可用性の高いクラウド バックアップ システムを開発することが特に重要です。 PHP フレームワーク Yii は、開発者が高性能の Web アプリケーションを迅速に構築できる強力なフレームワークです。ここでは、Yii フレームワークを使用して可用性の高いクラウド バックアップ システムを開発する方法を紹介します。データベースモデルの設計 Yii フレームワークでは、データベースモデルは非常に重要な部分です。データ バックアップ システムには多くのテーブルとリレーションシップが必要なため、

Symfony と Yii2: 大規模な Web アプリケーションの開発にはどちらのフレームワークが適していますか? Symfony と Yii2: 大規模な Web アプリケーションの開発にはどちらのフレームワークが適していますか? Jun 19, 2023 am 10:57 AM

Web アプリケーションの需要が高まるにつれ、開発者が開発フレームワークを選択する選択肢はますます増えています。 PHP フレームワークとして人気のある Symfony と Yii2 は、どちらも強力な機能とパフォーマンスを備えていますが、大規模な Web アプリケーションを開発する必要がある場合、どちらのフレームワークがより適しているのでしょうか。次に、より良い選択を行うために、Symphony と Yii2 の比較分析を行います。基本概要 Symphony は、PHP で書かれたオープンソースの Web アプリケーション フレームワークであり、上に構築されています。

Yii フレームワークでのデータクエリ: データに効率的にアクセスする Yii フレームワークでのデータクエリ: データに効率的にアクセスする Jun 21, 2023 am 11:22 AM

Yii フレームワークは、Web アプリケーション開発のプロセスを簡素化するための多数のツールとコンポーネントを提供するオープンソースの PHP Web アプリケーション フレームワークであり、その重要なコンポーネントの 1 つがデータ クエリです。 Yii フレームワークでは、SQL に似た構文を使用してデータベースにアクセスし、データを効率的にクエリおよび操作できます。 Yii フレームワークのクエリビルダーには主に次の種類があります: ActiveRecord クエリ、QueryBuilder クエリ、コマンド クエリ、独自の SQL クエリ

PHPでYii3フレームワークを使用するにはどうすればよいですか? PHPでYii3フレームワークを使用するにはどうすればよいですか? May 31, 2023 pm 10:42 PM

インターネットの発展に伴い、Web アプリケーション開発の需要もますます高まっています。開発者にとって、アプリケーションの開発には、開発効率を向上させる、安定性、効率性、強力なフレームワークが必要です。 Yii は、豊富な機能と優れたパフォーマンスを提供する、優れた高性能 PHP フレームワークです。 Yii3 は Yii フレームワークの次世代バージョンであり、Yii2 に基づいてパフォーマンスとコード品質をさらに最適化します。この記事では、Yii3 フレームワークを使用して PHP アプリケーションを開発する方法を紹介します。

win11ログインアカウントの解除方法 win11ログインアカウントの解除方法 Jan 11, 2024 pm 05:24 PM

win11システムでは、システムに入るたびにログインする必要がありますが、システム内にアカウントが1つしかない場合、またはアカウントを保護する必要がない場合は、毎回ログインする必要はありません。では、パスワードを解除することでログインアカウントを解除することができますので、以下で具体的な方法を見ていきましょう。 win11でログインアカウントをキャンセルする方法 1. まず、タスクバーの中央にある矢印ボタンをクリックし、すぐに「開始」オプションを選択します。 2. 次に、システム設定インターフェイスに入り、[実行]オプションをすぐにクリックして開始します。 3. 次に、コマンド controluserpasswords2 を入力し、Enter キーを押します。 4. [ユーザー アカウントのプロパティ] オプションをクリックして開き、[このマシンを使用するには、ユーザーは

Yii2 と Phalcon: グラフィック レンダリング アプリケーションの開発にはどちらのフレームワークが適していますか? Yii2 と Phalcon: グラフィック レンダリング アプリケーションの開発にはどちらのフレームワークが適していますか? Jun 19, 2023 am 08:09 AM

現在の情報化時代では、ビッグデータ、人工知能、クラウド コンピューティング、その他のテクノロジーが大手企業の焦点となっています。その中でも、高性能なグラフィックス処理技術として、グラフィックスカードレンダリング技術がますます注目を集めています。グラフィックス カード レンダリング テクノロジは、ゲーム開発、映画やテレビの特殊効果、エンジニアリング モデリングなどの分野で広く使用されています。開発者にとって、自分のプロジェクトに合ったフレームワークを選択することは非常に重要な決定です。現在の言語の中でも PHP は非常に動的な言語であり、Yii2、Ph などの優れた PHP フレームワークもいくつかあります。

win11でパワーオンパスワードを設定する方法 win11でパワーオンパスワードを設定する方法 Dec 22, 2023 pm 01:18 PM

コンピューターのプライバシーを設定したい場合、コンピューターのパワーオン パスワードを設定することができ、設定で行うだけで非常に便利ですので、見てみましょう。 win11 でパワーオン パスワードを設定する方法: 1. まず、[スタート] メニューを右クリックし、[設定] をクリックします。 2. 次に「アカウント」をクリックします。 3. 次に、「ログイン オプション」をクリックします。 4. 次に、「パスワード」を見つけて「追加」をクリックします。 5. 最後に、正常に追加できます。

PHP でユーザー入力の検証とセキュリティ フィルタリングを実行するにはどうすればよいですか? PHP でユーザー入力の検証とセキュリティ フィルタリングを実行するにはどうすればよいですか? Jun 29, 2023 pm 03:01 PM

PHP でユーザー入力の検証とセキュリティ フィルタリングを実行するにはどうすればよいですか? Web アプリケーションを開発する場合、ユーザー入力の検証とセキュリティ フィルタリングは非常に重要な側面です。ユーザー入力が正しく処理されないと、クロスサイト スクリプティング (XSS) や SQL インジェクション攻撃など、さまざまなセキュリティ上の脆弱性が発生する可能性があります。したがって、ユーザー入力の検証とセキュリティ フィルタリングは、Web アプリケーションを保護するための重要な手段の 1 つです。この記事では、PHP でユーザー入力の検証とセキュリティ フィルタリングを実行する方法を紹介します。データ型の検証 ユーザー入力を受け取る前に、まずデータ型を検証する必要があります

See all articles