文档章节

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

drewin
 drewin
发布于 2014/09/05 17:33
字数 420
阅读 56
收藏 0

此教程解释了:如何通过增加一个扩展自 CWebUser 并从名为 User 的数据表中检索用户信息的组件,从 Yii::app()->user 检索更多参数。 
也有另外一个方法来完成这个任务,它从 session 或 cookie 中检索变量: 
How to add more information to Yii::app()->user (based on session or cookie)。 
步骤如下: 
1. 确保你已经有一个数据库 User 模型。 
2. 创建一个扩展自 CWebUser 的组件。 
3. 在 config.php 中指定应用使用的用户类。 

1. User 模型应当如下: 
<?php 

// this file must be stored in: 
// protected/models/User.php 

class User extends CActiveRecord 

    
   public static function model($className=__CLASS__) 
   { 
       return parent::model($className); 
   } 
   public function tableName() 
   { 
       return 'User'; 
   } 

?> 
2. 然后我们创建 WebUser 组件: 
<?php 

// this file must be stored in: 
// protected/components/WebUser.php 

class WebUser extends CWebUser { 

 // Store model to not repeat query. 
 private $_model; 

 // Return first name. 
 // access it by Yii::app()->user->first_name 
 function getFirst_Name(){ 
   $user = $this->loadUser(Yii::app()->user->id); 
   return $user->first_name; 
 } 

 // This is a function that checks the field 'role' 
 // in the User model to be equal to 1, that means it's admin 
 // access it by Yii::app()->user->isAdmin() 
 function isAdmin(){ 
   $user = $this->loadUser(Yii::app()->user->id); 
   return intval($user->role) == 1; 
 } 

 // Load user model. 
 protected function loadUser($id=null) 
   { 
       if($this->_model===null) 
       { 
           if($id!==null) 
               $this->_model=User::model()->findByPk($id); 
       } 
       return $this->_model; 
   } 

?> 

3. 最后一步,配置应用 
<?php 
// you must edit protected/config/config.php 
// and find the application components part 
// you should have other components defined there 
// just add the user component or if you 
// already have it only add 'class' => 'WebUser', 

// application components 
'components'=>array( 
   'user'=>array( 
       'class' => 'WebUser', 
       ), 
), 
?> 

现在你可以使用如下命令: 
Yii::app()->user->first_name - 返回名字的属性 
Yii::app()->user->isAdmin() - 返回 admin 状态的函数 
现在你可以增加你想要的任何函数到 WebUser 组件。

本文转载自:http://blog.sina.com.cn/s/blog_775f158f01010fmi.html

共有 人打赏支持
drewin
粉丝 28
博文 121
码字总数 43979
作品 0
海淀
程序员
私信 提问
yii 权限分级式访问控制的实现(非RBAC法)

主要参考资料来源:yii官网http://www.yiiframework.com/wiki/60/ 我只是做了小小的完善。 yii framework 提供了2套权限访问系统,一套是简单的filter(过滤器)模式,另一套是复杂全面的RBA...

南国野兽
2012/12/27
0
7
yii中登录后跳转回登录前请求的页面

当我们请求一个经过权限控制的请求不通过时,会跳转到一个地方请求权限,请求结束后需要跳转回之前的页面。比如我们请求一个需要登录的action,会被跳转到login页面,我们希望登录成功后跳转...

bobshi
2013/09/25
0
1
安装指南: 带有 RBAC 的 Yii2 高级模板

在这里我介绍一种快速简单的方法来在 Yii2 高级模版中安装 RBAC(Role Based Access Control) 系统 安装: Yii2 高级模板 在这里使用 安装 yii2 高级模板。假如你的机器中没有 请下载 它的最新...

首席烤地瓜
2016/11/10
17
0
yii2开发中19条推荐实践(阿北总结)

虽然每个人的编程风格不同,但是有些建议能让你的代码更加规范和稳定,本次就我这次网站更新总结如下几点,希望对你的yii2学习和使用有所帮助。 环境说明 服务器环境: CentOS 开发环境及IDE...

阿北2017
2018/06/02
0
0
Yii2 模块化调用Module失败

一、错误信息如下: Unknown Class – yii\base\UnknownClassException Unable to find 'app\modules\user\UserModule' in file: E:\www\test\basic/modules/user/UserModule.php. Namespac......

joson_chan
2015/09/23
4.3K
1

没有更多内容

加载失败,请刷新页面

加载更多

如果让你写一个消息队列,该如何进行架构设计?

面试题 如果让你写一个消息队列,该如何进行架构设计?说一下你的思路。 面试官心理分析 其实聊到这个问题,一般面试官要考察两块: 你有没有对某一个消息队列做过较为深入的原理的了解,或者...

李红欧巴
今天
4
0
错题

无知的小狼
今天
2
0
PowerShell因为在此系统中禁止执行脚本的解决方法

参考:window系统包管理工具--chocolatey 报错提示: & : 无法加载文件 C:\Users\liuzidong\AppData\Local\Temp\chocolatey\chocInstall\tools\chocolateyInstall.ps1,因为在此系统上禁止运...

近在咫尺远在天涯
今天
3
0
TP5 跨域请求处理

https://blog.csdn.net/a593706205/article/details/81774987 https://blog.csdn.net/wyk9916/article/details/82315700...

15834278076
今天
3
0
深入理解java虚拟机-Java内存区域与内存溢出异常

深入理解java虚拟机 Java内存区域与内存溢出异常 运行时数据区域 程序计数器 线程私有,内存小,是当前线程执行的字节码行号指示器,字节码解释器通过改变这个计数器的值来选取下一条需要执行...

须臾之余
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部