文档章节

YII学习笔记之登陆验证

Damonli
 Damonli
发布于 2014/11/11 15:25
字数 358
阅读 33
收藏 1
点赞 0
评论 0

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.验证登陆!

© 著作权归作者所有

共有 人打赏支持
Damonli
粉丝 0
博文 2
码字总数 670
作品 0
青岛
Yii2如何实现用户登陆

这两天空的时候,看了下Yii2,然后按照官方教程,安装了Yii2基础版。最开始的问题,无非就是注册登陆等功能了,果然,Yii2基础版并不像高级版一样,可以直接导入创建好的数据库,只有的静态登...

卖小女孩的小火柴 ⋅ 2015/04/11 ⋅ 5

技术积累笔记概要

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

风清扬-深圳 ⋅ 2015/11/24 ⋅ 0

5月YII2学习总结

5月份YII2学习任务基本上告一段落了,总体感觉只是简单学习了YII2,可以进行基本的应用开发,文档没有全部看完,自己简单做了一个QA问答系统进行练手。 QA问答系统功能: 1、登陆、注册、收藏...

卖小女孩的小火柴 ⋅ 2015/05/25 ⋅ 2

Yii2.0 rules验证规则集合的详细介绍

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

botkenni ⋅ 05/27 ⋅ 0

yii2学习笔记--修改css和js文件(未完成)

(未完成,陆续添加内容) 一、通过模板文件添加的js和css如何修改: 1.1 修改AppAsset.php之中的css、js 假设模板文件为 views/layouts/main.php,观测可知其中有一句: AppAsset::register...

路过暴风 ⋅ 2016/01/06 ⋅ 1

Yii2使用$this->context获取当前的Module/Controller/Action

使用Yii2的时候,在某些场景和环境下需要获得Yii2目前所处于的module(模型)、Controller(控制器)、Action(方法),以及会调用控制器里面已经定义过的一些公共的方法等.对于这些问题Yii2可以在视...

botkenni ⋅ 06/13 ⋅ 0

安装指南: 带有 RBAC 的 Yii2 高级模板

在这里我介绍一种快速简单的方法来在 Yii2 高级模版中安装 RBAC(Role Based Access Control) 系统 安装: Yii2 高级模板 在这里使用 安装 yii2 高级模板。假如你的机器中没有 请下载 它的最新...

首席烤地瓜 ⋅ 2016/11/10 ⋅ 0

yii2 modal弹窗之ActiveForm ajax表单异步验证

作者:白狼 出处:http://www.manks.top/yii2modalactiveform_ajax.html 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责...

白狼栈 ⋅ 2016/06/19 ⋅ 0

yii2开发中19条推荐实践(阿北总结)

虽然每个人的编程风格不同,但是有些建议能让你的代码更加规范和稳定,本次就我这次网站更新总结如下几点,希望对你的yii2学习和使用有所帮助。 环境说明 服务器环境: CentOS 开发环境及IDE...

阿北2017 ⋅ 06/02 ⋅ 0

yii2搭建完美后台并实现rbac权限控制

作者:白狼 出处:http://www.manks.top/article/yii2framerbac_template 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律...

白狼栈 ⋅ 2016/03/30 ⋅ 2

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Mahout推荐算法API详解

前言 用Mahout来构建推荐系统,是一件既简单又困难的事情。简单是因为Mahout完整地封装了“协同过滤”算法,并实现了并行化,提供非常简单的API接口;困难是因为我们不了解算法细节,很难去根...

xiaomin0322 ⋅ 17分钟前 ⋅ 0

WampServer默认web服务器根目录位置

安装WampServer之后的web服务器根目录默认位置在WampServer安装目录下的www:

临江仙卜算子 ⋅ 18分钟前 ⋅ 0

Redux的一些手法记录

Redux Redux的基本概念见另一篇文。 这里记录一下Redux在项目中的实际操作的手法。 actions 首先定义action.js,actions的type,可以另起一个action-type.js文件。 action-type.js用来存...

LinearLaw ⋅ 19分钟前 ⋅ 0

android 手势检测(左右滑动、上下滑动)

GestureDetector类可以让我们快速的处理手势事件,如点击,滑动等。 使用GestureDetector分三步: 1. 定义GestureDetector类 2. 初始化手势类,同时设置手势监听 3. 将touch事件交给gesture...

王先森oO ⋅ 33分钟前 ⋅ 0

java 方法的执行时间监控 设置超时(Future 接口)

java 方法的执行时间监控 设置超时(Future 接口) import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.Executor......

青峰Jun19er ⋅ 38分钟前 ⋅ 0

一名开源小白的Apache成长自述

今天收到了来自Apache Vote我成为Serviceomb项目Committer的邮件,代表自己的贡献得到了充分的肯定;除了感谢团队的给力支持,我更希望将自己的成长经历——如何践行Apache Way的心得介绍给大...

微服务框架 ⋅ 40分钟前 ⋅ 0

vim介绍、颜色显示和移动光标、一般模式下复制、剪切和粘贴

1.vim 是 vi 的升级版 vim 是带有颜色显示的 mini安装的系统,一般都不带有vim [root@aminglinux-128 ~]# yum install -y vim-enhanced已加载插件:fastestmirror, langpacksLoading mir...

oschina130111 ⋅ 41分钟前 ⋅ 0

Deepin 操作系统四面楚歌

作为国内做的最好的 Linux 发行版,源自 Debian sid 的 Deepin 目前正面临重重困境,新版本不断延期,开发人员离职,bug 长期得不到修复,和 Debian/Ubuntu 的兼容性问题也面临越来越严重的挑...

六库科技 ⋅ 41分钟前 ⋅ 0

MyBatis之动态sql

我们需要知道的是,使用mybatis重点是对sql的灵活解析和处理。在原先的UserMappser.xml中,我们这样查询表中满足条件的记录 : 123 <select id="findUserList" parameterType="userQuery...

瑟青豆 ⋅ 41分钟前 ⋅ 0

这届俄罗斯世界杯的冷门那么多怎么办?

最纯粹的世界杯,最神奇的大冷门。 德国0比1被墨西哥摩擦了。 日本历史性的赢了哥伦比亚。 C罗也挑平了西班牙。 梅西被冰岛狮吼吼愣神了。 就连11次进世界杯4强的巴西也被瑞士逼平了。 天台已...

开源中国众包平台 ⋅ 42分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部