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的用户登录hash及其验证分析

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

Yii 用户登录体

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

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

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

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

转自:http://blog.csdn.net/itluochen/article/details/52183920 先看下一些软件是如何保存用户密码的: 我们先来看下QQ是怎么保存密码的: ...

salt盐度与用户密码加密机制

我们知道,如果直接对密码进行散列,那么黑客可以对通过获得这个密码散列值,然后通过查散列值字典(例如MD5密码破解网站),得到某用户的密码。  加Salt可以一定程度上解决这一问题。所谓加Salt方法,...

salt盐度与用户密码加密机制

http://www.ciker.net/ciker/ciker.asp?ciker=338   1 密码必须散列存储 (内容略) 2 加Salt散列 我们知道,如果直接对密码进...
  • zklth
  • zklth
  • 2011-12-24 09:12
  • 776

salt盐度与用户密码加密机制盐 (密码学)

盐 (密码学) http://www.ciker.net/ciker/ciker.asp?ciker=338 摘要: 1 加Salt散列 2 ASP.NET 2.0 Mem...

关于用户登录的记住密码实现思路(考虑到安全问题)

做网站的时候经常会碰到要实现记住密码,下次自动登录,一周内免登陆,一个月内免登陆这种需求。这种功能一般都是通过cookie来实现的。 整个过程就是用户在登陆的时候,如果选择了记住密码或者一周内免登陆...

dedecms 与 discuz 用户集成登录解决思路

php,织梦,dedecms,discuz,用户集成,同时登录
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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