Yii框架权限控制

yii权限管理 srbac 可以直接安装使用,很容易实现权限管理 立即下载

需求:公司拥有一套用户权限系统。我们在新版框架中,我们需要兼容这套用户权限系统。

 

问题:YII单表方式已经满足不了我们的需求,急切需要对YII进行扩展设计,支持数据库分表设计

 

解决方法:1、新建protected/sinashowExt/JController.php文件

/**
 * Controller is the customized base controller class.
 * All controller classes for this application should extend from this base class.
 */
class JController extends CController
{
	/**
	 * @var string the default layout for the controller view. Defaults to '//layouts/column1',
	 * meaning using a single column layout. See 'protected/views/layouts/column1.php'.
	 */
	public $layout='//layouts/column1';
	/**
	 * @var 菜单 {@link CMenu::items}.
	 */
	public $menu=array();
	/**
	 * @var 路径设置
	 * be assigned to {@link CBreadcrumbs::links}. Please refer to {@link CBreadcrumbs::links}
	 * for more details on how to specify this property.
	 */
	public $breadcrumbs	= array();
	//视图数据
	public $view		= array();
	//是否自动输出
	public $autoView	= false;
	//输出页面
	public $renderPage	= '';
	//页面提示文字
	public $notice	= '';
	//搜索标签
	public $searchTag	= array();
	//其他代码
	public $otherHtml	= '';
	//按钮标签
	public $buttonTag	= array();
	//单位标签
	public $unitTag		= '';
	//输出信息
	public $alertText	= '';
    //是否显示外框
    public $haveBorder   = true;
    
	public function init()
	{
		$cookie	= Yii::app()->request->getCookies();
		Yii::app()->user->id	= $cookie->itemAt('SSD_user_id')->value;
		Yii::app()->user->name	= $cookie->itemAt('SSD_user_nick')->value;
	}

	/**
	 * 判断是否有指定操作的权限
	 * 
	 * @param string $action
	 */
	public function checkPower($action)
	{
		return "purviewPcc::model()->checkPower('{$this->getModule()->getId()}', '{$this->getId()}', '{$action}')";	
	}
	
	/**
	 * 检查权限扩展
	 * 
	 * @param string $action
	 * @param string $contrl
	 * @param string $module
	 */
	public function checkPowerEx($action, $contrl=null, $module=null)
	{
		if ($contrl === null)
		{
			$contrl	= $this->getId();
		}
		
		if ($module === null)
		{
			$module	= $this->getModule()->getId();
		}
		
		return purviewPcc::model()->checkPower($module, $contrl, $action);
	}
	
	/**
	 * 权限判断
	 *
	 */
	 public function purview($module, $control, $action)
	 {
	 	if (!purviewPcc::model()->checkPurview($module,$control,$action))
	 	{
	 		echo '没有访问权限!';
	 		Yii::app()->end();
	 	}
	 }

	/**
	 * Action操作前动作
	 *
	 * @param unknown_type $action
	 * @return unknown
	 */	
	public function beforeAction($action)
	{
		if($action && $this->getModule())
			$this->purview($this->getModule()->getId(), $this->getId(), $action->getId());
		return true;
	}
	
	
	/**
	 * Action操作后动作
	 *
	 * @param string $action
	 */
	public function afterAction($action)
	{
		/** 是否自动输出 */
		if ($this->autoView)
		{
			//默认输入页面
			if (empty($this->renderPage))
				$this->renderPage	= $action->getId();			
			$this->render($this->renderPage, $this->view);
		}
	}
	
	/**
	 * 页面提示窗口
	 * 
	 * @param string $view
	 * @param array $data
	 * @param bool $exit
	 */
	public function alert($msg, $href = 'javascript:history.go(-1);', $time = 0, $exit = true, $view = '//system/alert', $data = array())
	{
		$this->autoView	= false;
		$data['msg']	= $msg;
		$data['href']	= $href;
		$data['time']	= $time;
		$this->render($view, $data);
		if ($exit)
		{
			Yii::app()->end();
		}
	}
}


使用方法:

例子:新做了菜单http://localhost/index.php?r=default/site/index菜单。操作有delete、create、update

步骤:

1、向综合后台管理员申请菜单权限和菜单操作权限(110101、11010101[删除]、11010102[新建]、11010103[修改])

2、在protected/config/purview.php 文件中为对应的action配置权限ID

return array(
	'default'=>array(
		'site'=>array(
			'index'=>110101,
			'delete'=>11010101,
			'create'=>11010102,
			'update'=>11010103
		)
	)
);

3、完成以上功能,基本已经完成了权限的配置,但是假如在用户没有某操作权限的时候,需要隐藏操作链接的时候,我们可以做一下操作

//表格内容
$this->widget('zii.widgets.grid.CGridView', array(
	'dataProvider'=>$model->search(),
	'columns'=>array(
        'id',
		'start_dt',
		'end_dt',
        array(
            'class'=>'CButtonColumn',
            'template'=>'{update} {delete}',
        	'updateButtonOptions'=>array(
				'onclick'=>'$.fn.sinaShow.openWindow("节目修改", this.href); return false;',
			),
			'buttons'=>array(
				'update'=>array(
					'visible'=>$this->checkPower('update')
				),
				'delete'=>array(
					'visible'=>$this->checkPower('delete')
				),
			)
        ),
	)
));


在这里的visible表达式中设置调用$this->checkPower('操作名');就可以隐藏没有权限访问的菜单了

yii权限控制的方法(三种方法) 主要介绍了yii权限控制的方法,结合实例形式分析了通过accessControl,插件机混合模式三种方法实现权限控制的实现技巧,需要的朋友可以参考下 立即下载

相关推荐

【对比学习+分割】CRIS:CLIP驱动RIS图像分割(CVPR 2022)

CRIS: CLIP-Driven Referring Image Segmentation

这个博客太懒了什么都没说 3324

Yii验证与授权

1、基本验证授权方式 在控制器重重写filters方法,这个filter指定的是过滤器,可以是当前控制的方法,必须是以filter开头。 我们来看看通过yii 中示例中博客的例子。 <?php class TblPostController extends Controller { /** * @return array 过滤器列表,会顺序执行 */ public functi

Feebas 1170

双翌视觉系统配合机械手大视野定位案例(单目标带角度抓取)

一、定位原理概述 1.系统构架 视觉定位系统采用正向打光方式,光源在机械手上方,CCD从上往下拍摄,进行图像分析定位。相机将计算出的像素坐标转换为机械手的物理坐标,视觉软件与机械手进行网口通讯,将视野内物料的物理坐标发送给机械手,机械手抓取物料放在指定工位。 2.相机标定概述 系统采用宫格标定确定像素坐标和物理坐标一一对应关系,同时利用3点或者多点旋转标定求出旋转中心 系统采用宫格标定,自定义行列数和间距及旋转角度,通过机械手发送的当...

weixin_51554164的博客 2171

Yii权限管理

概述 授权是指验证用户是否允许做某件事的过程。Yii提供两种授权方法: 存取控制过滤器(ACF)和基于角色的存取控制(RBAC)。在做用户平台前台应用时, AFC是比较常用, 易用的控制用户哪些页面可以直接访问, 哪些页面需要登录后访问的授权机制. ACF, Access Control Filter,  是一个Yii中的过滤器. yii\filters\AccessControl

大彪哥的博客 719

GPOPSII 对控制量变化率进行约束,避免控制量振荡

在这篇文章中,在GPOPSII中通过对控制量变化的约束,优化求解得到更平滑的控制量曲线,更符合真实控制约束。

Dannyfomer的博客 1869

(八)基于MuJoCo的LeRobot SO100仿真操控实战指南(操作优化)

本文详细介绍了如何在MuJoCo仿真环境中搭建并优化LeRobot SO100机械臂的操控。通过两种核心模式(纯键盘仿真与实机镜像同步)的实战演示,重点讲解了关键的参数标定方法,以实现虚拟模型与真实硬件的精准同步。文章还提供了性能优化技巧,旨在帮助开发者构建高效、安全的机器人算法开发与测试流程。

weixin_29083649的博客 317

yii1.1.14

首先下载好yii1.x的安装包,然后把他解压到你的WEB服务器目录,文件夹下有demos,framework,requirenments目录,在浏览器中打开requirenments目录下的index.php页面,可以看到yii的基本需求。              接下来按照yii官网的权威指南创建应用, 运行命令行:      % YiiRoot/framework/yiic webap

abel004的专栏 801

LIN协议栈 AUTOSAR架构下 状态管理

LIN State Manager 通过对这些状态的管理和转换,实现了对 LIN 总线通信状态的精确控制,以满足汽车电子系统中不同场景的需求。

汽车电子从业者,电子爱好者。 2050

YII RBAC

new CHttpException(403, '您没有访问权限!'); Yii::app()-&gt;end(); } } // CGRIDVIEW buttonID 'visible' =&gt;'$this-&gt;grid-&gt;controller-&gt;checkPower("delete")', public function checkPower($action, $contrl = nul

hudeyong926的专栏 267

OpenCV实战:用C++和Python实现亚像素边缘检测(附完整代码)

本文详细介绍了使用OpenCV实现亚像素边缘检测的技术,通过C++和Python双语言代码解析,提升工业测量和医学影像中的检测精度。文章涵盖算法原理、核心实现步骤及工业应用案例,帮助开发者掌握亚像素精度处理技术,解决高精度场景中的边缘检测难题。

beer8的博客 373

【思博伦】史上最详细Spirent TestCenter测试仪使用教程精讲(一)!图解超赞超详细!!!

3. 在弹出的界面中,找到菜单栏中的“Connect/Create”,选择下拉框中的“Connect to Physical/Visual Chassis”,在弹出的对话框中输入思博伦测试仪的IP地址:192.168.6.244,点击“OK”;说明:目前我们只需要使用到Raw Stream Block,不需要用到Bound Stream Block。说明:如果要使用100G模式,由于硬件限制,必须连续3个面板端口同时配置为100G使用。打开安装包,并按照提示按照即可。

风云说通信 6477

Yii框架中的权限控制如何控制用户访问权限

在Yii框架中,权限控制主要通过基于角色的访问控制(RBAC)来实现。RBAC是一种基于角色的访问控制机制,通过将用户和权限分别关联到角色,在角色授权过程中实现用户和权限之间的解耦,从而有效地管理用户访问权限。

sheji888的专栏 1044

2026年3月GESP真题及题解(C++七级): 选择题和判断题(题解)

2026年3月GESP真题及题解(C++七级): 选择题和判断题(题解)

王老师青少年编程 984

php系列【仅供参考】:Yii框架中的权限控制如何控制用户访问权限

Yii框架中的权限控制如何控制用户访问权限

weixin_54626591的博客 657

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Yii 框架的Rbac [权限控制]

转载自xmlife的博客 : http://blog.youkuaiyun.com/xmlife/article/details/50733451 1.首先我们要在配置文件的组件(component)里面配置一下 Rbac [php]view plaincopy ‘authManager’=>[ ‘class’=>‘yii\rbac...

weixin_34404393的博客 154

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

yii 权限控制

摘录以3种: 1,通过accessControl, public function filters() { return array( 'accessControl', // perform access control for CRUD operations ); } /** * Specifies the access control rules. *

yuhui_fish的专栏 2661

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

YII2框架RBAC 自己开发(权限控制)实例运用

1、首先说一下什么是RBAC 基于角色的访问控制(Role-Based Access Control),作为传统访问控制(自主访问,强制访问)的有前景的受到广泛的关注,在RBAC中,权限与角色相关联,用户通过角色的成员得到这些角色的权限。这就极大地简化了权限的管理。在一个组织中,角色是为了完成各种工作而创造,用户则依据他的责任和资格来被指派响应的角色,用户可以很容易地从一个角色被指派到另一个角色

woshihaiyong168的博客 4089

Yii框架扩展chatRoomTypeTreeColumn【主题区权限控制下拉菜单】

Yii框架扩展chatRoomTypeTreeColumn【主题区权限控制下拉菜单】配置详细说明(继承自JInputElement类库) 属性名:$productId 说明:产品ID 属性名:$nodeIdKey 说明:节点ID键值名称 属性名:$nodeNameKey 说明:节点名键值名称 属性名:$nodeId 说明:节点ID

jake451的专栏 972

YII2.0框架(五) RBAC基于角色的权限控制yii\rbac\DbManager

摘自 http://www.yiichina.com/doc/guide/2.0/security-authorization   一、RBAC配置。   这是配置RBAC的参数列表,我使用的是数据库的RBAC设置,可以根据文档配置数据表,或者使用文件里面的SQL表,配置好了就可以使用RBAC了,非常方便. 'authManager' =&gt; [ 'clas...

后端研发工程师Marion的博客 1913

使用Yii框架做权限验证 -- 从无到企业级别控制

最近到新公司了,然后,这边虽然使用Yii框架,不过,居然没有使用filter或者其他的功能,而所有的验证代码都堆在了beforeAction,相信有点经验的开发者都知道,这是致命性的,不可持续的。现在beforeAction已经有250行左右了。再这么发展半年,后面的开发就会很难进行下去。所以,这是一个拆分解耦的过程。 因为系统是商业系统,涉及到钱的都很敏感,另外慢也不要快。所以,不可能

BrightLee的专栏 4105

Yii2 Template 组件框架集封装

项目简介:   Yii2_Template是一个“提供大多数PHP常用的组件去集合成的一套基于Yii2的项目框架”。   该项目是一款秉着提高 开发效率、降低开发成本,遵循高拓展,高可用的原则的进行开发的框架。   架构和安装上的的一些逻辑和细节,之后会慢慢的逐个说明。 功能特性   所有的功能组件都是能不耦合的都不会去耦合这些组件模块,为了就是保证日后开发者们对组件功能的升...

211

(yii学习笔记)控制器权限控制

public function filters() { return array( 'accessControl', // per 'postOnly + delete', // ); } public function accessRules() { return array( array('allow', // allow all use...

weixin_30354675的博客 132

Yii2框架ACF(AccessControl Filter)的使用

AccessControl其实也就是 yii\filters\AccessControl Filter, 我们下面简写为 ACF 作为描述。 ACF,访问控制过滤器,适用于简单的验证,面对的对象便是控制器的action。对于一些复杂的验证方式,我们后面会说到 Role Based Access Control (rbac),即基于角色的权限控制。 接下来我们就上面抛出的问题进行解析。...

310

Yii基于RBAC的权限控制

Yii 权限控制的实现

一个想死的骷髅 553

yii2权限控制rbac之菜单menu最详细教程

前面我们在博文yii2搭建完美后台并实现rbac权限控制实例教程中完美实现了yii2的后台搭建和rbac权限控制,如果你还没有实现,请先看上文再回来参考本文,因为本文是在上文的基础上进行完善和补充。 先认个错,罪过了,你将要看的这篇教程是菜单权限的扩展,如果你的菜单出不来,很是建议你参考yii2 rbac权限控制详细操作步骤 部分小伙们纷纷反映,最后菜单menu怎么控制权限呀,看...

angzhan5306的博客 200
上一篇: Yii框架分表设计
下一篇: Yii框架layout【布局】的应用
jake451
博客等级 码龄16年 13粉丝 22原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值