如果在用户登录后想额外调用除 user,id之外的数据库变量,可以这样设置:
在登陆验证时候增加额外项:Yii::app()->user->last_login_time
在UserIdentity.php中
- classUserIdentityextendsCUserIdentity
- {
- $this->setState('last_login_time',$user->last_login_time);
- }
如此,在应用程序的任何地方,这个属性可以通过如下获取:Yii::app()->user->last_login_time
再重新登录看看,
- publicfunctionsetState($key,$value,$defaultValue=null){
- $key=$this->getStateKeyPrefix().$key;
- if($value===$defaultValue)
- unset($_SESSION[$key]);
- else
- $_SESSION[$key]=$value;
- }
其实他将信息放到session中了
其中的user是yii的一个components.需要在protected/config/main.php中定义
- 'user'=>array(
- //enablecookie-basedauthentication
- 'allowAutoLogin'=>true,
- 'loginUrl'=>array('site/login'),
- ),
通过扩展CWebUser添加信息到Yii:app()->user
步骤:1、添加$user属性到UserIdentity类。 添加getUser()方法-getter上面这个属性。加setUser($user)方法-setter上面这个属性,它可以赋值给user的信息通过$user这个属性。
用户信息存到数据库表里
我的UserIdentity类例子:
- <?php
- classUserIdentityextendsCUserIdentity{
- /**
- *User'sattributes
- *@vararray
- */
- public$user;
- publicfunctionauthenticate(){
- $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;
- }
- publicfunctiongetUser(){
- return$this->user;
- }
- publicfunctionsetUser(CActiveRecord$user){
- $this->user=$user->attributes;
- }
- }
- ?>
现在用户的属性已经设置,创建WebUser类并把它放在/protected/components
- <?php
- classWebUserextendsCWebUser{
- publicfunction__get($name){
- if($this->hasState('__userInfo')){
- $user=$this->getState('__userInfo',array());
- if(isset($user[$name])){
- return$user[$name];
- }
- }
- returnparent::__get($name);
- }
- publicfunctionlogin($identity,$duration){
- $this->setState('__userInfo',$identity->getUser());
- parent::login($identity,$duration);
- }
- publicfunctiongetIsGuest(){
- $customer=Yii::app()->session->get('customer');
- return$customer===null||$customer['id']===null;
- }
- }
- ?>
记得设置一下这个类Yii::app()->user
- <?php
- 'components'=>array(
- 'user'=>array(
- 'class'=>'WebUser',
- )
- )
- ?>
调用方法
Yii::app()->user->getIsGuest()
2用户信息存到单独的文件
- <?php
- classWebUserextendsCWebUser
- {
- publicfunctiongetReturnUrl($defaultUrl=null)
- {
- $userInfo=$this->getUserInfo();
- if(isset($userInfo['url'])){
- return$userInfo['url'];
- }
- returnparent::getReturnUrl($defaultUrl);
- }
- protectedfunctionafterLogin($fromCookie)
- {
- parent::afterLogin($fromCookie);
- $users=require(dirname(__FILE__).'/../config/password.php');
- $this->setState('userInfo',$users[$this->getName()]);
- }
- publicfunctiongetUserInfo()
- {
- return$this->getState('userInfo',array());
- }
- //accessRulesroles
- publicfunctioncheckAccess($operation,$params=array(),$allowCaching=true)
- {
- $userInfo=$this->getUserInfo();
- if($userInfo['group']==$operation){
- returntrue;
- }
- returnparent::checkAccess($operation,$params,$allowCaching);
- }
- }
password.php
- <?php
- returnarray(
- 'dianyin'=>array(
- 'pwd'=>'dianyinXX',
- 'url'=>array('dianyin/order/index'),
- 'merchant_id'=>1,
- 'group'=>'dianyin',
- ),
- 'boer'=>array(
- 'pwd'=>'boerXX',
- 'url'=>array('third_jifen/default/index'),
- 'merchant_id'=>1,
- 'group'=>'jifen',
- ),
- );
权限checkAccess结合roles
- publicfunctionaccessRules()
- {
- returnarray(
- array('allow',//allowauthenticateduserstoaccessallactions
- 'roles'=>array('jifen'),
- ),
- array('allow',//denyallusers
- 'actions'=>array('login','logout'),
- 'users'=>array('*'),
- ),
- array('deny',//denyallusers
- 'users'=>array('*'),
- ),
- );
- }
相关推荐
Yii框架调试辅助扩展yiidebugtb
yiiframework 1 框架user扩展
yii2-device-detect, 移动检测库的Yii2扩展 yii2-device-detect基于Yii2扩展的移动检测库。使用它只需要在 composer.json file: 中使用这个扩展"alexandernst/yii2-device-detect":"0.0.12",
yii2 支付宝扩展插件
yii2-浏览器信息 Yii2扩展名。 提供有关浏览器的详细信息。 当前可用的提供商: Browscap( ) 安装 安装此扩展的首选方法是通过 。 要安装,请运行 $ ...
学习如何编写Yii2扩展,以扩展形式编写资源包,实现在不同应用和项目之间重用资源包,且降低维护成本。
YiiMailer, Yii扩展使用PHPMailer发送带有布局的电子邮件 YiiMailerYii ( v1.1. x ) 扩展使用 PHPMailer 发送电子邮件的布局。特性基于 PHPMailer ( 绑定,使用分支'Composer的Composer 支持支持Yii布局和翻译支持...
PHP YII 发送邮件扩展 使用方法: $mail = new YiiMailer(); //$mail->clearLayout();//if layout is already set in config $mail->setFrom('from@example.com', 'John Doe'); $mail->setTo(Yii::app()->params['...
yii framework 1 rbac扩展
yii2-swoole 这是用于 swoole 支持的 yii2 扩展 还是行不通
Yii2-Curl, 在 PHP cURL上,基于 Yii2 cURL扩展 yii2-curl扩展 Yii2的易于工作的cURL扩展,包括RESTful支持:POST获取头部放置补丁删除要求Yii2PHP 5.4 Curl和 php Curl安装安装安装这里
用于 RBAC 迁移的 Yii 2 扩展 安装 在composer.json添加: { "require": { "rmrevin/yii2-rbac-migration": "1.1.*" } } 用法 创建新的迁移扩展 \rmrevin\yii\rbac\RbacMigration 并作为正常迁移执行 <? //...
Yii2工作台支持yii2扩展开发 当开发软件包yii2时,默认有两个选项: 您可以将源代码存储在github或本地git存储库中 您可以将源代码存储在本地磁盘中,并将扩展名添加到yii的扩展名配置中 以上选择的缺点: 使用第...
yii2-image, 基于Kohana图像库的图像处理Yii2框架扩展 yii2-image简单易用的Yii2框架扩展,使用强大的Kohana图像库进行图像操作。 灵感由老yii扩展 http://www.yiiframework.com/extension/image/ 和Kohana图像库 ...
yii2 图片上传扩展插件
yii通过自身的扩展与QQwry纯真IP数据库连接,获取IP以及地理位置。很强大,之前通过看别人资料,自己整合了下,相当完善,新手完全按步骤操作。一步搞定!
YII扩展 IP地址识别组件 采用QQWRY数据库 使用条件: 解压到相应的目录。 确定QQWRY.DAT 放入 protacted/data 确定IpLocation 放入 protacted/components 修改main.php 'components'=>array( //......
受到来自 packalyst.com 的请求部分的启发,这个 git 存储库的问题跟踪器作为一个平台来分享关于 Yii 2 扩展的想法和信息。 秉承 GitHub 的座右铭“共同构建更好的软件”,我们诚邀每一位 Yii 扩展开发者加入这个...
yii生成api文档的扩展
curl远程请求,支持post、get 多种方法,方便实现接口,采集,平台短信发送等多种功能。