yii 前台,后台登录验证的问题 [ 新手入门 ]
我现在的问题是,前台登录以后,后台也登录了。我的前后台登录是两个页面,我是用控制器里的accessRules()这个函数来判断用户是否登录的。我应该怎么做,是在配置文件main.php里配置吗? 请大侠们帮帮忙!:)
共 10 条回复
-
wangerting1988 回复于 2011-09-20 15:12 举报
我想用accessRules()这个函数来判断用户是否登录,但是前台登录以后,后台好像也登录了,我进后台的每一个页面说我没有权限,应该是到登录页面让我登录才对。
-
wangerting1988 回复于 2011-09-20 15:25 举报
我应该是要新加一个验证体系,但是网上的说的不明白。你能写一个例子吗?
-
wangerting1988 回复于 2011-09-20 16:56 举报
解决了
以下是源码,不过我还是不怎么理解。网上down下来以后就可以用,也是我要的效果。
通过扩展CWebUser添加信息到Yii:app()->user(您的登录验证可能与我的版本不同,因此你将会使用适合脚本,以满足您的需求。我只告诉你我的意思)
步骤:1、添加$user属性到UserIdentity类。 添加getUser()方法-getter上面这个属性。加setUser($user)方法-setter上面这个属性,它可以赋值给user的信息通过$user这个属性。
我的UserIdentity类例子:
<?php class UserIdentity extends CUserIdentity { /** * User's attributes * @var array */ public $user; public function authenticate() { $this->errorCode=self::ERROR_PASSWORD_INVALID; $user=User::model()->findByAttributes(array('email'=>CHtml::encode($this->username))); if ($user) { if ($user->password === md5($user->salt.$this->password)) { $this->errorCode=self::ERROR_NONE; $this->setUser($user); } } unset($user); return !$this->errorCode; } public function getUser() { return $this->user; } public function setUser(CActiveRecord $user) { $this->user=$user->attributes; } } ?>
现在用户的属性已经设置,创建WebUser类并把它放在/protected/components
<?php class WebUser extends CWebUser { public function __get($name) { if ($this->hasState('__userInfo')) { $user=$this->getState('__userInfo',array()); if (isset($user[$name])) { return $user[$name]; } } return parent::__get($name); } public function login($identity, $duration) { $this->setState('__userInfo', $identity->getUser()); parent::login($identity, $duration); } } ?>
记得设置一下这个类Yii::app()->user
<?php 'components'=>array( 'user'=>array( 'class'=>'WebUser', ) ) ?>
-
278893912qq 回复于 2011-09-20 17:08 举报
飘过来学习的。
-
xiangnengji 回复于 2012-08-02 16:57 举报
见贴必回
wangerting1988 北京
注册时间:2011-08-10
最后登录:2014-06-09
在线时长:0小时20分
最后登录:2014-06-09
在线时长:0小时20分
- 粉丝4
- 金钱410
- 威望0
- 积分410