如果在用户登录后想额外调用除 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 User 扩展则进一步增强了框架的用户管理能力,使得开发者可以更便捷地处理用户认证和授权流程。 该扩展的核心功能包括: 1. **用户注册**:Yii User 提供了用户注册表单,包括邮箱验证和可选的手机验证,确保...
"Yii框架调试辅助扩展yiidebugtb"是针对Yii框架的一个专门用于调试的应用扩展,它极大地便利了开发者在开发过程中对代码性能、数据库查询、会话状态等关键信息的监控。 该扩展的核心功能包括: 1. **性能监控**:...
Yii2扩展开发与代码复用是当前流行的PHP开发框架Yii2的一个重要实践领域,特别是在资源包的开发和复用方面,本文将深入探讨如何利用资源包来管理和维护前端资源,以及如何通过扩展的形式实现代码的复用。 在Yii2...
yii2-device-detect, 移动检测库的Yii2扩展 yii2-device-detect基于Yii2扩展的移动检测库。使用它只需要在 composer.json file: 中使用这个扩展"alexandernst/yii2-device-detect":"0.0.12",
yii2-浏览器信息 Yii2扩展名。 提供有关浏览器的详细信息。 当前可用的提供商: Browscap( ) 安装 安装此扩展的首选方法是通过 。 要安装,请运行 $ ...
YiiMailer, Yii扩展使用PHPMailer发送带有布局的电子邮件 YiiMailerYii ( v1.1. x ) 扩展使用 PHPMailer 发送电子邮件的布局。特性基于 PHPMailer ( 绑定,使用分支'Composer的Composer 支持支持Yii布局和翻译支持...
然后,你需要在Yii项目中创建一个扩展,或者使用已有的扩展,来处理这个数据库文件并提供查询接口。 创建扩展时,你可以编写一个服务类,该类包含读取和解析`qqwry.dat`文件的方法。解析过程可能涉及到二进制搜索和...
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['...
Yii2队列扩展就是为了满足这种需求而设计的,它支持多种队列后台服务,包括数据库(DB)、Redis、RabbitMQ、Beanstalkd和Gearman。 1. **数据库(DB)队列**:使用数据库作为队列存储是一种常见且易于实现的方法。...
Yii apidoc扩展是一个强大的工具,它可以自动扫描你的代码,提取注释信息,然后生成结构清晰、易于阅读的API文档。这个工具支持RESTful API的文档生成,非常适合PHP开发中的REST API项目。"echo-ding-yii-apidoc-709...
这个“yii2 支付宝扩展插件”是专门为Yii2框架设计的,目的是为了方便开发者集成支付宝接口,实现在线支付功能。在Web应用中,尤其是电子商务平台,支付功能是不可或缺的部分,而支付宝作为中国最流行的第三方支付...
YII扩展 IP地址识别组件 采用QQWRY数据库 使用条件: 解压到相应的目录。 确定QQWRY.DAT 放入 protacted/data 确定IpLocation 放入 protacted/components 修改main.php 'components'=>array( //......
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 并作为正常迁移执行 <? //...
在Yii框架1.1版本中,RBAC扩展提供了一套完善的机制,允许开发者轻松管理用户的权限,确保系统的安全性。 RBAC的核心概念包括:角色(Role)、任务(Task)、操作(Operation)以及规则(Rule)。在Yii的RBAC系统中...
Yii2工作台支持yii2扩展开发 当开发软件包yii2时,默认有两个选项: 您可以将源代码存储在github或本地git存储库中 您可以将源代码存储在本地磁盘中,并将扩展名添加到yii的扩展名配置中 以上选择的缺点: 使用第...
yii2-image, 基于Kohana图像库的图像处理Yii2框架扩展 yii2-image简单易用的Yii2框架扩展,使用强大的Kohana图像库进行图像操作。 灵感由老yii扩展 http://www.yiiframework.com/extension/image/ 和Kohana图像库 ...
Yii2-Swoole 是一个专为 PHP 的 Yii2 框架设计的扩展,它将高性能的 Swoole 引擎集成到 Yii2 应用程序中,以实现更高效的异步、非阻塞和事件驱动的服务器端编程。Swoole 是一个原生的 PHP 扩展,能够构建 Web 服务、...
受到来自 packalyst.com 的请求部分的启发,这个 git 存储库的问题跟踪器作为一个平台来分享关于 Yii 2 扩展的想法和信息。 秉承 GitHub 的座右铭“共同构建更好的软件”,我们诚邀每一位 Yii 扩展开发者加入这个...
"yii2 图片上传扩展插件"就是为了简化这一过程而设计的。 该插件主要解决以下问题: 1. **图片预览**:允许用户在上传前预览图片,提高用户体验。 2. **多文件上传**:支持一次上传多个图片文件,提高效率。 3. **...