YII 用户登录 借鉴ecshop salt思路

原创 2015年07月08日 11:28:38
UserIdentity.php

<?php

/**
 * UserIdentity represents the data needed to identity a user.
 * It contains the authentication method that checks if the provided
 * data can identity the user.
 */
class UserIdentity extends CUserIdentity
{
	/**
	 * Authenticates a user.
	 * The example implementation makes sure if the username and password
	 * are both 'demo'.
	 * In practical applications, this should be changed to authenticate
	 * against some persistent user identity storage (e.g. database).
	 * @return boolean whether authentication succeeds.
	 */
		public function authenticate()
		{
		
			//校验数据的真实性
			//find 没有就返回空  findAll返回空数组
			$user_model = AdminUser::model()->find('user_name=:username',array(':username'=>$this->username));
			if ($user_model === null) {
				
				//用户名判断
				$this->errorCode = self::ERROR_USERNAME_INVALID;
				return false;
			}elseif ($user_model->password !== md5(md5($this->password).$user_model->ec_salt)){
				//用户输入密码 . ec_salt 之后md5加密即可
				//密码判断
				//echo $user_model->password.'   '.md5(md5($this->password).$user_model->ec_salt).'<br>';
				//echo $this->password.'    '.md5($this->password).$user_model->ec_salt.'   '.md5(md5($this->password).$user_model->ec_salt);
				//die;
				$this->errorCode = self::ERROR_PASSWORD_INVALID;
				return false;
			}else{
				//合法
				$this->errorCode = self::ERROR_NONE;
				$lifeTime = 30 * 24 * 3600;
				session_set_cookie_params($lifeTime);
				Yii::app()->session['admin_msg'] = $user_model;//将对象存入admin_msg中
				Yii::app()->session['YD[admin_id]'] = $user_model->user_id;
				Yii::app()->session['YD[admin_name]'] = $user_model->user_name;
				Yii::app()->session['YD[action_list]'] = $user_model->action_list;
				Yii::app()->session['YD[belong_house]'] = $user_model->belong_house;// 管辖范围
				Yii::app()->session['YD[imgURL]'] = trim($user_model->custom_head_img) ? '/'.$user_model->custom_head_img : '';// 头像URL
				Yii::app()->session['YD[audioURL]'] = trim($user_model->custom_ringtones) ? '/'.$user_model->custom_ringtones : '';// 个性提醒URL
				
				if (empty($user_model->ec_salt)) {
					$ec_salt = rand(1, 9999);
					$new_possword = md5(md5($this->password).$ec_salt);
					YD_MysqlUtil::YD_execute("UPDATE {{admin_user}} SET ec_salt='$ec_salt', password='$new_possword' WHERE user_id='".Yii::app()->session['YD[admin_id]']."'");
				}
				return true;
			}
		
		/* $users=array(
			// username => password
			'demo'=>'demo',
			'admin'=>'admin',
		);
		if(!isset($users[$this->username]))
			$this->errorCode=self::ERROR_USERNAME_INVALID;
		elseif($users[$this->username]!==$this->password)
			$this->errorCode=self::ERROR_PASSWORD_INVALID;
		else
			$this->errorCode=self::ERROR_NONE;
		return !$this->errorCode; */
	}
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

Yii2 防止用户重复登录

1.新建存放用户登录口令token的表,并生成model CREATE TABLE IF NOT EXISTS `tbl_admin_session` ( `session_id` int(11)...
  • navioo
  • navioo
  • 2016年07月21日 10:06
  • 1695

yii2的用户登录hash及其验证分析

使用gii生成用户表的model生成的几个方法解析: 随机数生成 protected function generateSalt($cost = 13) { $c...

Yii2.0 用户登录详解(上)

一、准备 在开始编写代码之前,我们需要思考一下:用户登陆模块,实现的是什么功能?很明显,是登陆功能,那么,登陆需要用户名和密码,我们在数据库的一张表中就应该准备好用户名和密码的字段,再思考一下,...

Yii 用户登录体

Yii 登录验证依靠两个类 1.CUserIdentity(实现基于用户名和密码的验证)  文件地址:/web/auth/CUserIdentity.php 2.CWebUser(储存用户的持...
  • H_L_S
  • H_L_S
  • 2016年01月26日 16:33
  • 487

Yii 用户登录和注销流程

属个人理解,有出错的地方请评论指出,谢谢~ 用户登录时,调用默认控制器siteController/actionLogin public function actionLogin()     {...
  • KUN_PHP
  • KUN_PHP
  • 2013年01月26日 22:01
  • 1879

Yii Framework2.0开发教程(10)配合mysql数据库实现用户登录

配合mysql数据库实现用户登录

Yii2.0 探究三 :用户登录机制

前言:做后台管理的首要任务当然是登陆、注册;登陆的重要性不言而喻,而yii框架为我们封装好了用户的验证方法,我们要做的就是模仿,接触别的框架的可能会有人问:我自己写一个验证登录啊,不就是查询数据库,对...

yii用户登录改为数据库user表登录并添加验证码

yii默认登录是admin和demo 首先要修改成用数据库中的user表进行登录 1.用gii生成user表的模型类User 2.重写protected/components/UserIdenti...

【Android】RSA+salt保存用户的登陆密码

转自:http://blog.csdn.net/itluochen/article/details/52183920 先看下一些软件是如何保存用户密码的: 我们先来看下QQ是怎么保存密码的: ...
  • sko121
  • sko121
  • 2016年10月31日 10:54
  • 159
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:YII 用户登录 借鉴ecshop salt思路
举报原因:
原因补充:

(最多只允许输入30个字)