yii 用户登录验证(cwebuser) yii 用户登录 (记)

yii 的确是一个强大而臃肿的框架,简单的小项目,或者只做后台接口调用的项目,建议不要用。

今天记录一下yii使用中cwebuser(Yii::app()->user->login())登录;

1、准备工作

官方标准做法,在components里加一个UserIdentity.php文件,class UserIdentity extends
CUserIdentity

继承CUserIdentity,然后在UserIdentity类里面写验证的业务过程(比如你在哪张表去查数据,取数据之类)

2、开始登录

new 一个UserIdentity,传入参数,然后执行验证方法

例:

$this->_identity=new
UserIdentity($this->username,$this->password);
$this->_identity->authenticate();

3、调用Yii::app()->user->login()保存数据(session)

调用YII组件设置session

Yii::app()->user->login($this->_identity,$duration);//$duration,session过期时间,此方法在/framework/web/auth/CWebUser.php    
LINE 222

$this->_identity对象中getId(),getName()方法一般返回用户名,用户ID等,

官方的CUserIdentity类里,都是返回用户名($this->username)//此方法在/framework/web/auth/CUserIdentity 
LINE 78

如果需要UID的话,可以在UserIdentity重写getId()方法,这样你在使用yii::app()->user->getId()的时候,调用的就是UID而不是username了。

这样就可以通过yii::app()->user->getId(),yii::app()->user->getName()访问SESSION里的用户数据,

如果还需要放其他数据,在CUserIdentity类里重写getPersistentStates()方法,然后把你要保存的数据以数据形式return
出来。

这里你就可以通过yii::app()->user->getState(‘key‘);这种形式调用,这里的key是getPersistentStates()方法return出来的数组key。

此文说明一个yii用户验证的思路,不建议复制文中任何一句代码。可以在阅读理解后,自己操作。有基础功力可以看看/framework/web/auth/CWebUser.php源码

yii 用户登录验证(cwebuser) yii 用户登录 (记)

时间: 2024-10-27 05:46:23

yii 用户登录验证(cwebuser) yii 用户登录 (记)的相关文章

Django+中间件+登录验证

Django的request请求需要首先经过中间件处理,再通过URL查找到对应的views函数进行处理.在settings的MIDDLEWARE_CLASSES中 添加设置中间件进行激活,大致原理如下图所示: 在使用Django框架进行开发的过程中,遇到一个问题:要求对觉得多数页面请求request进行用户登录验证,如果用户没有登录则跳转回到登录页面: 如果用户登录了,则直接跳转到新的链接页面? 在django中提供了一种自定义装饰器@login_required来实现验证用户登录: 1 # c

使用COOKIE实现登录 VS 使用SESSION实现登录

注:本文使用的代码基于PHP,其他语言逻辑同理. 一:使用COOKIE实现登录验证 使用cookie实现登录的方式,主要通过一些单向的加密信息进行验证.比如admin用户登录了之后,服务端生成一个cookie值:admin_1533006028_ bbf2c2b1ec5cfb62d0a30438d8d0305c ,这个cookie值包含用户名,cookie到期时间和一个信息签名.签名的信息为 "用户名_用户密码_cookie到期时间_盐" 比如:md5("admin_1533

Django 登录检查-自动重定向到登录页

编写一个Mixin类 from django.contrib.auth.decorators import login_required from django.utils.decorators import method_decorator class LoginRequiredMixin(object): """ 登录验证:如果未登录,自动重定向到登录页面 """ @method_decorator(login_required(login_

Yii登录验证和全局访问用户ID

注意:Yii默认的代码,Yii::app()->user->id返回的不是我们想要的用户ID,而是用户名.因此在useridentity类中要用一个变量来存储登录用户的ID,然后重载getID()方法,返回正确的用户ID. Yii 有一个内置的验证/授权(auth)框架,用起来很方便,还能对其进行自定义,使其符合特殊的需求. Yii auth 框架的核心是一个预定义的 用户(user)应用组件 它是一个实现了 IWebUser 接口的对象.此用户组件代表当前用户的持久性认证信息.我们可以通过Y

YII MVC之用户注册和用户登录(一)

这部分主要包含 1 基本控制器.模型.视图使用规则: 2 登录和注册在视图通过表单使用YII小物件并分析: 3 模型中规则制定和分析: 4 控制器用方法形式访问其他类: 5 进行session和cookie分析 ,并在前后区分session和cookie: 6 生成验证码 : 这期间也会会有错误,会不断修正 先看下目录结构: 1 基本控制器.模型.视图使用规则: 控制器:都需要继承Controller基类  进行外部访问的方法都需要以action做为方法名称的开始. 用方法形式访问其他类,需要定

YII MVC之用户注册和用户登录(二)

2 登录和注册在视图通过表单使用YII小物件并分析 <?php $form = $this -> beginWidget('CActiveForm', array( 'enableClientValidation'=>true, 'clientOptions'=>array( 'validateOnSubmit'=>true, ), ) ); ?> <?php $this->endWidget(); ?> $this是什么?控制器?小物件对象?还是?

YII用户注册和用户登录(二)之登录和注册在视图通过表单使用YII小物件并分析

登录和注册在视图通过表单使用YII小物件并分析 [php] view plain copy print? <?php $form = $this -> beginWidget('CActiveForm', array( 'enableClientValidation'=>true, 'clientOptions'=>array( 'validateOnSubmit'=>true, ), ) ); ?> <?php $this->endWidget(); ?&

YII MVC之用户注册和用户登录(五)

5 进行session和cookie分析 ,并在前后区分session和cookie: 记住登录状态 这样下次再登录网站的时候,就不用重复输入用户名和密码. 是浏览器的cookie把状态给记住了. 制作表单: <tr> <td align="right"> <?php echo $form->checkBox($user_login, 'rememberMe'); ?> </td> <td> <?php echo

用户密码登录验证

#登录验证小程序 user_ku = [['name1','psw1'],['name2','psw2']] #用户验证密码库lock_list = [] #锁定用户库,3次登录失败进入的小黑屋canzhao = [] #登录失败的录入,如果用count数出3次,进入锁定 while True: name = input('输入你的用户名:') psw = input('请输入你的密码:') if name in lock_list: #判断用户是否进入小黑屋 print('此账号锁定,不能再用