찾다
백엔드 개발PHP 튜토리얼yii에 새로운 사용자 인증을 추가하는 방법
yii에 새로운 사용자 인증을 추가하는 방법Jun 15, 2018 pm 04:20 PM
yii사용자 확인

이 글은 yii에 신규 사용자 인증을 추가하는 방법에 대한 자세한 분석 및 소개입니다. 필요하신 분들은 참고하시면 됩니다

1 왜 신규 사용자 인증을 추가해야 할까요? 웹사이트를 추가하고 싶습니다. 백엔드와 프론트엔드가 동일한 Yii 애플리케이션에 내장되어 있습니다. 하지만 프론트엔드에도 회원 관리 센터가 포함되어 있습니다. 두 가지 사용자 인증이 완전히 다르기 때문에 두 개의 다른 로그인 페이지가 필요하며, 사용자 정보도 있어야 합니다. 또는 다른 쿠키에 저장됩니다. 따라서 애플리케이션에 사용자 확인을 추가해야 합니다.
2.yii 사용자 확인:
사용자 확인을 사용자 정의하기 전에 먼저 yii의 확인 및 승인 방법을 파악해야 합니다. .
사용자를 확인하려면 확인 논리가 포함된 확인 클래스를 정의해야 합니다. Yii에서 이 클래스는 IUserIdentity 인터페이스를 구현해야 하며, 각 클래스는 일반적으로 웹사이트 로그인에 사용자 이름과 비밀번호가 필요합니다. Yii는 CUserIdentity 클래스를 제공하며, 이 클래스는 일반적으로 사용자 이름과 비밀번호를 확인하는 데 사용됩니다. 상속한 후에는 authenticate() 메서드를 다시 작성하여 자체 확인 방법을 구현해야 합니다.
Php

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 code

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

사용자가 종료할 때 다음 코드가 호출됩니다.

Php code

// 注销当前用户  
Yii::app()->user->logout(); 
 其中的user是yii的一个components.需要在protected/config/main.php中定义
Php code
'user'=>array(  
    // enable cookie-based authentication  
    'allowAutoLogin'=>true,  
        'loginUrl' => array('site/login'),  
),
여기에서는 사용자의 클래스 이름을 지정하지 않습니다. 왜냐하면 yii에서는 기본 사용자가 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('*')  
                ),  
            );  
        }  
}

필터 메소드에 특정 필터를 설정한 것을 볼 수 있습니다.
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 코드

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에서 CAdminUser를 상속합니다: Php 코드

class CAdminWebUser extends CWebUser  
{  
    public $loginUrl = array('admin/admin/login');  
}

글로벌 애플리케이션인 경우 protected/config/main.php의 구성 요소를 전달합니다. 섹션:

Php code

'user'=>array(  
    // enable cookie-based authentication  
        'class' => 'CAdminUser',  
    'allowAutoLogin'=>true,  
       'loginUrl' => array('site/login'),  
),

모듈에 있는 경우 모듈의 init 메소드에 다음 코드를 추가하세요. class:

Php code

$this->setComponents(array(  
       'adminUser' => array(  
                'class' => 'CAdminWebUser',  
                'allowAutoLogin' => false,  
        )  
));

최종 호출 방법

Php code

//全局应用  
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 클래스 Method
Php 코드

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

의 filterAccessController를 다시 작성합니다. 여기서는 accessRules에서 adminUser의 인증을 지정할 수 있습니다. () of this Controller


위 내용은 이 글의 전체 내용입니다. 모든 분들의 공부에 도움이 되었으면 좋겠습니다. 관련 내용은 PHP 중국어 홈페이지를 참고해주세요!

관련 권장 사항:


PHP의 Yii 프레임워크에서 로그인 기능 구현 정보

yii2.0 사용자가 다른 테이블에 로그인하는 데 사용되는 사용자 테이블을 수정하는 방법

위 내용은 yii에 새로운 사용자 인증을 추가하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
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系统中,我们每次进入系统都需要登录账户,但是如果我们的系统中只有一个账户或不需要保护账户的话,就不需要每次都登录了,这时候可以通过取消密码来取消登录账户,下面就一起来看一下具体的方法吧。win11怎么取消登录账户1、首先,点击任务栏中央的箭头按钮,迅速选中“开始”选项。2、接着,进入系统设置的界面,并快速单击“运行”选项进行启动。3、接下来,输入指令:controluserpasswords2,按下Enter键即可。4、点击打开“用户账户属性”选项,取消勾选“要使用本机,用户必须输入

如何使用PHP框架Yii开发一个高可用的云备份系统如何使用PHP框架Yii开发一个高可用的云备份系统Jun 27, 2023 am 09:04 AM

随着云计算技术的不断发展,数据的备份已经成为了每个企业必须要做的事情。在这样的背景下,开发一款高可用的云备份系统尤为重要。而PHP框架Yii是一款功能强大的框架,可以帮助开发者快速构建高性能的Web应用程序。下面将介绍如何使用Yii框架开发一款高可用的云备份系统。设计数据库模型在Yii框架中,数据库模型是非常重要的一部分。因为数据备份系统需要用到很多的表和关

Yii2 vs Phalcon:哪个框架更适合开发显卡渲染应用?Yii2 vs Phalcon:哪个框架更适合开发显卡渲染应用?Jun 19, 2023 am 08:09 AM

在当前信息时代,大数据、人工智能、云计算等技术已经成为了各大企业关注的热点。在这些技术中,显卡渲染技术作为一种高性能图形处理技术,受到了越来越多的关注。显卡渲染技术被广泛应用于游戏开发、影视特效、工程建模等领域。而对于开发者来说,选择一个适合自己项目的框架,是一个非常重要的决策。在当前的语言中,PHP是一种颇具活力的语言,一些优秀的PHP框架如Yii2、Ph

如何在win11上设置开机密码如何在win11上设置开机密码Dec 22, 2023 pm 01:18 PM

要是想要给自己的电脑设置隐私的话,我们是可以给电脑设置开机密码的,而且也很方便,只需要在设置中就可以完成了,下面一起来看看吧。win11怎么设置开机密码:1、首先右键“开始”菜单,点击设置。2、然后点击“账户”。3、接着点击“登录选项”。4、随后找到“密码”并且点击添加。5、最后就可以成功添加了。

Symfony vs Yii2:哪个框架更适合开发大型Web应用?Symfony vs Yii2:哪个框架更适合开发大型Web应用?Jun 19, 2023 am 10:57 AM

随着Web应用需求的不断增长,开发者们在选择开发框架方面也越来越有选择的余地。Symfony和Yii2是两个备受欢迎的PHP框架,它们都具有强大的功能和性能,但在面对需要开发大型Web应用时,哪个框架更适合呢?接下来我们将对Symphony和Yii2进行比较分析,以帮助你更好地进行选择。基本概述Symphony是一个由PHP编写的开源Web应用框架,它是建立

Yii框架中的数据查询:高效地访问数据Yii框架中的数据查询:高效地访问数据Jun 21, 2023 am 11:22 AM

Yii框架是一个开源的PHPWeb应用程序框架,提供了众多的工具和组件,简化了Web应用程序开发的流程,其中数据查询是其中一个重要的组件之一。在Yii框架中,我们可以使用类似SQL的语法来访问数据库,从而高效地查询和操作数据。Yii框架的查询构建器主要包括以下几种类型:ActiveRecord查询、QueryBuilder查询、命令查询和原始SQL查询

如何在PHP进行用户输入验证和安全过滤?如何在PHP进行用户输入验证和安全过滤?Jun 29, 2023 pm 03:01 PM

如何在PHP进行用户输入验证和安全过滤?在开发Web应用程序时,用户输入验证和安全过滤是非常重要的环节。如果不正确处理用户输入,可能会导致各种安全漏洞,如跨站脚本攻击(XSS)和SQL注入攻击。因此,对用户输入进行验证和安全过滤是保护Web应用程序的重要措施之一。本文将介绍如何在PHP中进行用户输入验证和安全过滤。数据类型验证在接收用户输入之前,首先需要验证

See all articles

핫 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 Hentai를 무료로 생성하십시오.

뜨거운 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

DVWA

DVWA

DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

SecList

SecList

SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경