이 글은 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 메소드가 있습니다.
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 중국어 홈페이지를 참고해주세요!
yii2.0 사용자가 다른 테이블에 로그인하는 데 사용되는 사용자 테이블을 수정하는 방법
위 내용은 yii에 새로운 사용자 인증을 추가하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

随着互联网的不断发展,Web应用程序开发的需求也越来越高。对于开发人员而言,开发应用程序需要一个稳定、高效、强大的框架,这样可以提高开发效率。Yii是一款领先的高性能PHP框架,它提供了丰富的特性和良好的性能。Yii3是Yii框架的下一代版本,它在Yii2的基础上进一步优化了性能和代码质量。在这篇文章中,我们将介绍如何使用Yii3框架来开发PHP应用程序。

在win11系统中,我们每次进入系统都需要登录账户,但是如果我们的系统中只有一个账户或不需要保护账户的话,就不需要每次都登录了,这时候可以通过取消密码来取消登录账户,下面就一起来看一下具体的方法吧。win11怎么取消登录账户1、首先,点击任务栏中央的箭头按钮,迅速选中“开始”选项。2、接着,进入系统设置的界面,并快速单击“运行”选项进行启动。3、接下来,输入指令:controluserpasswords2,按下Enter键即可。4、点击打开“用户账户属性”选项,取消勾选“要使用本机,用户必须输入

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

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

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

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

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

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


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

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

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

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

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경
