`

Yii login 扩展, 存放信息

    博客分类:
  • php
 
阅读更多

 

如果在用户登录后想额外调用除 user,id之外的数据库变量,可以这样设置:

在登陆验证时候增加额外项:Yii::app()->user->last_login_time

在UserIdentity.php中

代码收藏代码
  1. classUserIdentityextendsCUserIdentity
  2. {
  3. $this->setState('last_login_time',$user->last_login_time);
  4. }

如此,在应用程序的任何地方,这个属性可以通过如下获取:Yii::app()->user->last_login_time

再重新登录看看,

代码收藏代码
  1. publicfunctionsetState($key,$value,$defaultValue=null){
  2. $key=$this->getStateKeyPrefix().$key;
  3. if($value===$defaultValue)
  4. unset($_SESSION[$key]);
  5. else
  6. $_SESSION[$key]=$value;
  7. }

其实他将信息放到session中了

其中的user是yii的一个components.需要在protected/config/main.php中定义

代码收藏代码
  1. 'user'=>array(
  2. //enablecookie-basedauthentication
  3. 'allowAutoLogin'=>true,
  4. 'loginUrl'=>array('site/login'),
  5. ),

通过扩展CWebUser添加信息到Yii:app()->user

步骤:1、添加$user属性到UserIdentity类。 添加getUser()方法-getter上面这个属性。加setUser($user)方法-setter上面这个属性,它可以赋值给user的信息通过$user这个属性。

用户信息存到数据库表里
我的UserIdentity类例子:

代码收藏代码
  1. <?php
  2. classUserIdentityextendsCUserIdentity{
  3. /**
  4. *User'sattributes
  5. *@vararray
  6. */
  7. public$user;
  8. publicfunctionauthenticate(){
  9. $this->errorCode=self::ERROR_PASSWORD_INVALID;
  10. $user=User::model()->findByAttributes(array('email'=>CHtml::encode($this->username)));
  11. if($user){
  12. if($user->password===md5($user->salt.$this->password)){
  13. $this->errorCode=self::ERROR_NONE;
  14. $this->setUser($user);
  15. }
  16. }
  17. unset($user);
  18. return!$this->errorCode;
  19. }
  20. publicfunctiongetUser(){
  21. return$this->user;
  22. }
  23. publicfunctionsetUser(CActiveRecord$user){
  24. $this->user=$user->attributes;
  25. }
  26. }
  27. ?>

现在用户的属性已经设置,创建WebUser类并把它放在/protected/components

代码收藏代码
  1. <?php
  2. classWebUserextendsCWebUser{
  3. publicfunction__get($name){
  4. if($this->hasState('__userInfo')){
  5. $user=$this->getState('__userInfo',array());
  6. if(isset($user[$name])){
  7. return$user[$name];
  8. }
  9. }
  10. returnparent::__get($name);
  11. }
  12. publicfunctionlogin($identity,$duration){
  13. $this->setState('__userInfo',$identity->getUser());
  14. parent::login($identity,$duration);
  15. }
  16. publicfunctiongetIsGuest(){
  17. $customer=Yii::app()->session->get('customer');
  18. return$customer===null||$customer['id']===null;
  19. }
  20. }
  21. ?>

记得设置一下这个类Yii::app()->user

代码收藏代码
  1. <?php
  2. 'components'=>array(
  3. 'user'=>array(
  4. 'class'=>'WebUser',
  5. )
  6. )
  7. ?>

调用方法

Yii::app()->user->getIsGuest()

 

2用户信息存到单独的文件

代码收藏代码
  1. <?php
  2. classWebUserextendsCWebUser
  3. {
  4. publicfunctiongetReturnUrl($defaultUrl=null)
  5. {
  6. $userInfo=$this->getUserInfo();
  7. if(isset($userInfo['url'])){
  8. return$userInfo['url'];
  9. }
  10. returnparent::getReturnUrl($defaultUrl);
  11. }
  12. protectedfunctionafterLogin($fromCookie)
  13. {
  14. parent::afterLogin($fromCookie);
  15. $users=require(dirname(__FILE__).'/../config/password.php');
  16. $this->setState('userInfo',$users[$this->getName()]);
  17. }
  18. publicfunctiongetUserInfo()
  19. {
  20. return$this->getState('userInfo',array());
  21. }
  22. //accessRulesroles
  23. publicfunctioncheckAccess($operation,$params=array(),$allowCaching=true)
  24. {
  25. $userInfo=$this->getUserInfo();
  26. if($userInfo['group']==$operation){
  27. returntrue;
  28. }
  29. returnparent::checkAccess($operation,$params,$allowCaching);
  30. }
  31. }

password.php

代码收藏代码
  1. <?php
  2. returnarray(
  3. 'dianyin'=>array(
  4. 'pwd'=>'dianyinXX',
  5. 'url'=>array('dianyin/order/index'),
  6. 'merchant_id'=>1,
  7. 'group'=>'dianyin',
  8. ),
  9. 'boer'=>array(
  10. 'pwd'=>'boerXX',
  11. 'url'=>array('third_jifen/default/index'),
  12. 'merchant_id'=>1,
  13. 'group'=>'jifen',
  14. ),
  15. );

权限checkAccess结合roles

代码收藏代码
  1. publicfunctionaccessRules()
  2. {
  3. returnarray(
  4. array('allow',//allowauthenticateduserstoaccessallactions
  5. 'roles'=>array('jifen'),
  6. ),
  7. array('allow',//denyallusers
  8. 'actions'=>array('login','logout'),
  9. 'users'=>array('*'),
  10. ),
  11. array('deny',//denyallusers
  12. 'users'=>array('*'),
  13. ),
  14. );
  15. }
分享到:
评论

相关推荐

    yii-user扩展

    Yii User 扩展则进一步增强了框架的用户管理能力,使得开发者可以更便捷地处理用户认证和授权流程。 该扩展的核心功能包括: 1. **用户注册**:Yii User 提供了用户注册表单,包括邮箱验证和可选的手机验证,确保...

    Yii框架调试辅助扩展

    "Yii框架调试辅助扩展yiidebugtb"是针对Yii框架的一个专门用于调试的应用扩展,它极大地便利了开发者在开发过程中对代码性能、数据库查询、会话状态等关键信息的监控。 该扩展的核心功能包括: 1. **性能监控**:...

    Yii2扩展开发与代码复用:以资源包为例

    Yii2扩展开发与代码复用是当前流行的PHP开发框架Yii2的一个重要实践领域,特别是在资源包的开发和复用方面,本文将深入探讨如何利用资源包来管理和维护前端资源,以及如何通过扩展的形式实现代码的复用。 在Yii2...

    yii2-device-detect, 移动检测库的Yii2扩展.zip

    yii2-device-detect, 移动检测库的Yii2扩展 yii2-device-detect基于Yii2扩展的移动检测库。使用它只需要在 composer.json file: 中使用这个扩展"alexandernst/yii2-device-detect":"0.0.12",

    yii2-browser-info:Yii2扩展名。 提供有关浏览器的详细信息

    yii2-浏览器信息 Yii2扩展名。 提供有关浏览器的详细信息。 当前可用的提供商: Browscap( ) 安装 安装此扩展的首选方法是通过 。 要安装,请运行 $ ...

    YiiMailer, Yii扩展使用PHPMailer发送带有布局的电子邮件.zip

    YiiMailer, Yii扩展使用PHPMailer发送带有布局的电子邮件 YiiMailerYii ( v1.1. x ) 扩展使用 PHPMailer 发送电子邮件的布局。特性基于 PHPMailer ( 绑定,使用分支'Composer的Composer 支持支持Yii布局和翻译支持...

    Yii扩展 IP地址获取识别

    然后,你需要在Yii项目中创建一个扩展,或者使用已有的扩展,来处理这个数据库文件并提供查询接口。 创建扩展时,你可以编写一个服务类,该类包含读取和解析`qqwry.dat`文件的方法。解析过程可能涉及到二进制搜索和...

    PHP YII 发送邮件扩展

    PHP YII 发送邮件扩展 使用方法: $mail = new YiiMailer(); //$mail-&gt;clearLayout();//if layout is already set in config $mail-&gt;setFrom('from@example.com', 'John Doe'); $mail-&gt;setTo(Yii::app()-&gt;params['...

    Yii2队列扩展支持DBRedisRabbitMQBeanstalk和Gearman

    Yii2队列扩展就是为了满足这种需求而设计的,它支持多种队列后台服务,包括数据库(DB)、Redis、RabbitMQ、Beanstalkd和Gearman。 1. **数据库(DB)队列**:使用数据库作为队列存储是一种常见且易于实现的方法。...

    yii生成api文档的扩展

    Yii apidoc扩展是一个强大的工具,它可以自动扫描你的代码,提取注释信息,然后生成结构清晰、易于阅读的API文档。这个工具支持RESTful API的文档生成,非常适合PHP开发中的REST API项目。"echo-ding-yii-apidoc-709...

    yii2 支付宝扩展插件

    这个“yii2 支付宝扩展插件”是专门为Yii2框架设计的,目的是为了方便开发者集成支付宝接口,实现在线支付功能。在Web应用中,尤其是电子商务平台,支付功能是不可或缺的部分,而支付宝作为中国最流行的第三方支付...

    yii扩展--ip地址识别--QQWRY

    YII扩展 IP地址识别组件 采用QQWRY数据库 使用条件: 解压到相应的目录。 确定QQWRY.DAT 放入 protacted/data 确定IpLocation 放入 protacted/components 修改main.php 'components'=&gt;array( //......

    Yii2-Curl, 在 PHP cURL上,基于 Yii2 cURL扩展.zip

    Yii2-Curl, 在 PHP cURL上,基于 Yii2 cURL扩展 yii2-curl扩展 Yii2的易于工作的cURL扩展,包括RESTful支持:POST获取头部放置补丁删除要求Yii2PHP 5.4 Curl和 php Curl安装安装安装这里

    yii2-rbac-migration:用于 RBAC 迁移的 Yii2 扩展

    用于 RBAC 迁移的 Yii 2 扩展 安装 在composer.json添加: { "require": { "rmrevin/yii2-rbac-migration": "1.1.*" } } 用法 创建新的迁移扩展 \rmrevin\yii\rbac\RbacMigration 并作为正常迁移执行 &lt;? //...

    yii框架 rbac扩展

    在Yii框架1.1版本中,RBAC扩展提供了一套完善的机制,允许开发者轻松管理用户的权限,确保系统的安全性。 RBAC的核心概念包括:角色(Role)、任务(Task)、操作(Operation)以及规则(Rule)。在Yii的RBAC系统中...

    yii2-workbench:Yii2工作台支持yii2扩展开发

    Yii2工作台支持yii2扩展开发 当开发软件包yii2时,默认有两个选项: 您可以将源代码存储在github或本地git存储库中 您可以将源代码存储在本地磁盘中,并将扩展名添加到yii的扩展名配置中 以上选择的缺点: 使用第...

    yii2-image, 基于Kohana图像库的图像处理Yii2框架扩展.zip

    yii2-image, 基于Kohana图像库的图像处理Yii2框架扩展 yii2-image简单易用的Yii2框架扩展,使用强大的Kohana图像库进行图像操作。 灵感由老yii扩展 http://www.yiiframework.com/extension/image/ 和Kohana图像库 ...

    yii2-swoole:这是用于 swoole 支持的 yii2 扩展

    Yii2-Swoole 是一个专为 PHP 的 Yii2 框架设计的扩展,它将高性能的 Swoole 引擎集成到 Yii2 应用程序中,以实现更高效的异步、非阻塞和事件驱动的服务器端编程。Swoole 是一个原生的 PHP 扩展,能够构建 Web 服务、...

    yii2-extension-requests:Yii 2 扩展的创意“市场”

    受到来自 packalyst.com 的请求部分的启发,这个 git 存储库的问题跟踪器作为一个平台来分享关于 Yii 2 扩展的想法和信息。 秉承 GitHub 的座右铭“共同构建更好的软件”,我们诚邀每一位 Yii 扩展开发者加入这个...

    yii2 图片上传扩展插件

    "yii2 图片上传扩展插件"就是为了简化这一过程而设计的。 该插件主要解决以下问题: 1. **图片预览**:允许用户在上传前预览图片,提高用户体验。 2. **多文件上传**:支持一次上传多个图片文件,提高效率。 3. **...

Global site tag (gtag.js) - Google Analytics