文档章节

YII学习笔记之登陆验证

Damonli
 Damonli
发布于 2014/11/11 15:25
字数 358
阅读 33
收藏 1

yii登陆身份验证

步骤:

1.使用yiic生成yii项目,具体方法:去掉main.php中gii模块的注释,修改密码;

2.准备登陆使用的数据库表,这里使用test_user表;

3.使用gii生成表对应的model以及表的CRUD操作;

4.CUserIdentity是yii非常重要的组件,会被自动加载,修改.../components/UserIdentity.php的验证方式:

public function authenticate()
	{
		$username = strtolower($this->username);
		$user = User::model()->find('LOWER(username)=?',array($username));
		if ($user == null){
			$this->errorCode = self::ERROR_USERNAME_INVALID;
		}else if (!$user->validatePassword($this->password)){//validatePassword method
			$this->errorCode = self::ERROR_PASSWORD_INVALID;
		}else{
			$this->_id = $user->id;
			$this->username = $user->username;
			$this->errorCode = self::ERROR_NONE;
		}
		return $this->errorCode == self::ERROR_NONE;
		
	}

通常,还会重写getId方法,这样做,在代码的任何位置使用yii::app()->user访问到;

5.增加表对应model的validatePassword方法,可使用yii内置的CPasswordHelper,方式如下:

public function validatePassword($password)
	{
		return CPasswordHelper::verifyPassword($password,$this->password);
	}
	public function hashPassword($password)
	{
		return CPasswordHelper::hashPassword($password);
	}

6.最后在处理登陆表单提交上来数据的控制器,增加两个方法调用:

public function rules()
	{
		return array(
			// username and password are required
			array('username, password', 'required'),
			// rememberMe needs to be a boolean
			array('rememberMe', 'boolean'),
			// password needs to be authenticated
			array('password', 'authenticate'),
		);
	}
public function authenticate($attribute,$params)
	{
		if(!$this->hasErrors())
		{
			$this->_identity=new UserIdentity($this->username,$this->password);
			if(!$this->_identity->authenticate())
				$this->addError('password','Incorrect username or password.');
		}
	}

7.验证登陆!

© 著作权归作者所有

共有 人打赏支持
上一篇: 原生JS读取xml
下一篇: 原生JS读取xml
Damonli
粉丝 0
博文 2
码字总数 670
作品 0
青岛
私信 提问
技术积累笔记概要

2015年11月24日 1、rest 速率限制,写属于自己的方法。 2、actions方法深刻了解。 3、YII技术博客:http://blog.csdn.net/terrywater/article/category/2565815。 4、静态方法传递参数的习惯...

风清扬-深圳
2015/11/24
78
0
Yii学习笔记:利用setFlash和runController打造个性化的提示信息页面

在实现Yii::success()这样的调用方式之前,你可能需要阅读我的这篇博文: 《Yii学习笔记:扩展YiiBase入口类》 之后请继续往下看: 首先我们在yii.php的Yii类里面添加两个方法: /** 成功提示...

吾爱
2013/12/28
0
0
实用的Laravel Debug调试工具

转载请注明: 转载自Yuansir-web菜鸟 | LAMP学习笔记 本文链接地址: 实用的Laravel Debug调试工具 主要推荐laravel几个适合开发调试用的工具 1.Clockwork 首先Chrome 插件 Clockwork 安装 Co...

Yuansir
2015/01/19
0
2
Yii2.0 rules验证规则集合的详细介绍

我在学习Yii2的路上,学习笔记 required : 必须值验证属性 代码如下: email : 邮箱验证 代码如下: match : 正则验证 url : 网址 代码如下: captcha : 验证码 代码如下: safe : 安全 compare ...

botkenni
05/27
0
0
Yii框架学习笔记(一)引入Yii框架

Yii Framework是一个基于组件、用于开发大型 Web 应用的高性能 PHP 框架。Yii提供了今日Web 2.0应用开发所需要的几乎一切功能。Yii是最有效率的PHP框架之一。Yii是创始人薛强的心血结晶,于2...

flute小行
2014/04/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

linux脚本中父shell与子shell 执行的几种方式

本文主要介绍以下几个命令的区别: shell subshell source $ (commond) `commond` Linux执行Scripts有两种方式,主要区别在于是否建立subshell 1. source filename or . filename 不创建sub...

问题终结者
14分钟前
1
0
安装jdk和Tomcat

12月12日任务 16.1 Tomcat介绍 16.2 安装jdk 16.3 安装Tomcat Tomcat介绍 Tomcat是apache软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目,由apache、Sun和其他一些...

robertt15
15分钟前
3
0
Beetl 免费视频

来自 https://my.oschina.net/gking?q=Beetl ,Beetl终于有人录制视频了 项目git地址:https://gitee.com/gavink/beetl-blog 视频地址:下载下来会更清晰,视频比较长,可使用倍速看 百度网盘...

闲大赋
27分钟前
0
0
isEmpty和null的区别

isEmpty和null的区别: 1.一个是对象为空(IsNull),一个是值为空(IsEmpty) 2.IsNull指任务类型变量是否为空包括对象类型的变量。 IsNull函数: 功能:返回Boolean的值,指明表达是否不包...

DemonsI
54分钟前
3
0
Centos7 安装mysql与php

https://blog.csdn.net/qq_36431213/article/details/79576025 官网下载安装mysql-server 依次使用下面三个命令安装 wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.r......

Yao--靠自己
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部