`
niqingyang
  • 浏览: 44327 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

YII2 Controller中如何进行权限校验

    博客分类:
  • YII
 
阅读更多

Controller中进行权限校验的方式:

第一种: 通过can函数来判断是否有某个权限的执行权限,如果没有则抛出未授权的异常,通常在Controller的Action开头使用,如下

/**
 * 发布商品
 */
public function actionAdd ()
{
	if(! can('shop-goods-add'))
	{
		throw new \common\base\UnauthorizedException();
	}
	.........
}

 第二种:重写Controller的auths函数,返回访问权限配置:

 

	/**
	 * 权限校验
	 *
	 * {@inheritDoc}
	 *
	 * @see \common\web\Controller::auths()
	 */
	public function auths ()
	{
		// 发布商品
		$auths['add|add-images|success'] = 'shop-goods-add';
		
		// 编辑商品
		$auths['edit|edit-images|edit-gift'] = 'shop-goods-edit';
		
		// 获取运费模板列表:必须拥有发布或者编辑的权限
		$auths['freights'] = [
			'shop-goods-add', 
			'shop-goods-edit'
		];
		
		// 商品上下架
		$auths['offsale|onsale'] = 'shop-goods-sale';
		
		// 商品删除
		$auths['delete'] = 'shop-goods-delete';
		
		return $auths;
	}

 

现在主要对第二种进行详细解读:

 

1.模式:$auths[A] = B;

 

其中 A 为访问Action的Id,例如:actionAdd则A为add,actionAddGoods则A为add-goods;如果需要多个action对应一套权限代码,则多个actionId间用“|”分割。

 

其中 B 为权限代码,可以为字符串,多个权限可以用数组表示,并且多个权限间的逻辑关系为“或”,只要有用户拥有其中一个权限即可进行访问操作。

 

2.公式:$auths[A|A|A|A|A] = [B,B,B,B,B]

 

 

分享到:
评论

相关推荐

    YII快速入门教程

    ### YII快速入门教程知识点详解 #### 一、基本概念 **1. 入口文件** - **定义**: 入口文件是启动Yii框架的第一个PHP文件。它负责加载Yii框架的核心文件并设置运行环境。 - **作用**: 初始化环境变量、加载配置...

    yii快速入门教程--一个非常好的php框架

    ### Yii快速入门教程知识点 #### 一、基本概念 ...- **功能**: 在Yii应用中集成第三方库。 - **实现方式**: 下载并配置第三方库。 以上是基于给定部分内容的详细解析,希望对你学习Yii框架有所帮助。

    Yii2中Restful API原理实例分析

    本文章将详细介绍Yii2中Restful API的原理,并结合源码进行分析,同时探讨其使用方法和相关注意事项。 首先,Yii2中的RESTful API实现是基于一套REST控制器和动作的。这些控制器扩展自`yii\web\Controller`,并且...

    PHP生成二维码实例附演示地址(yii框架生成二维码).rar

    在Yii框架中集成这个库,我们需要先通过Composer安装。打开终端,进入项目目录,然后运行以下命令: ```bash composer require endroid/qrcode ``` 接下来,创建一个控制器,例如`QrCodeController`,并定义一个...

    Yii 1.1 Application Development Cookbook.pdf

    - **片段缓存**:对页面中特定部分进行缓存。 - **数据缓存**:缓存数据库查询结果或其他计算结果,减少数据库负载。 ##### 7. 国际化与本地化 - **语言切换**:支持多语言界面显示。 - **日期时间格式化**:根据...

    web框架安全.pdf

    拦截器可以用来进行权限校验、日志记录等安全相关的任务。 6. Ognl防护:Ognl(对象图导航语言)是一种表达式语言,Struts2框架之前版本存在Ognl安全漏洞。通过采用SecurityMemberAccess限制等措施来进行防护。 ...

    WEB框架0day漏洞的发掘及分析经验分享.pdf

    4. 权限校验:框架通过访问控制过滤器和拦截器实现权限校验,比如在控制器(controller)中设置访问过滤器,或在Struts2中利用拦截器的includeMethods。 5. 拦截器:在执行Controller之前,拦截器可以执行特定操作...

    藏经阁WEB框架0day漏洞的发掘及分析经验分享.pdf

    4. 权限校验:基于用户名、IP地址和访问类型进行初步授权,如YII的访问控制过滤器和Struts2的拦截器。 5. 拦截器:在执行Controller之前,可以进行额外操作,类似于Filter功能,有助于实现动态权限控制和业务逻辑...

    yii2.0整合阿里云oss删除单个文件的方法

    2. **控制器接收参数**:控制器(Controller)负责处理来自视图(View)的请求,并且负责与模型(Model)进行交互。在控制器中,开发者需要编写代码来接收前端传递的参数,例如文件ID(fileid)。 3. **控制器转发...

    代码审计PPT.pdf

    - 例如,在Struts2中,可以通过配置拦截器来实现细粒度的权限控制。 5. **拦截器**: - 拦截器是在执行Controller之前运行的一段代码,可用于执行通用任务,如日志记录、性能监控等。 - 例如,在Struts2中,可以...

    Yii框架上传图片用法总结

    这允许我们为上传的文件进行类型、大小的校验。如指定允许上传的文件类型(jpg, png, gif等)和最大文件大小(例如10MB)。如果上传文件超出了设定的大小限制,模型会自动返回错误信息。 示例代码如下: ```php ...

    PHP实例开发源码-php在线考试系统 PPExam.zip

    - **输入验证**:防止SQL注入攻击,对用户输入的数据进行过滤和校验。 - **XSS防护**:避免跨站脚本攻击,对输出内容进行编码处理。 - **HTTPS加密**:保护用户数据传输的安全,使用HTTPS协议进行通信。 8. **...

    thinkphp3.2.3 开发大型商城项目完整笔记

    在ThinkPHP中,可以定义全局作用域的类和常量,这些类和常量可以在任何命名空间中使用。 **6. 命名空间使用注意** - 避免名称冲突。 - 正确使用`use`关键字。 - 合理规划命名空间结构。 **7. tp框架中使用命名...

    PHP实例开发源码-php 口福科技网上订餐系统连锁版.zip

    - 输入验证:对用户输入进行校验,防止SQL注入和XSS攻击。 - 密码加密:用户密码通常会进行哈希加密存储,保护用户信息安全。 - CSRF防护:防止跨站请求伪造,确保请求来源的合法性。 5. **性能优化**: - 数据...

    基于PHP的雅辉科技身份证查验PHP系统源码.zip

    在解压后的源码中,这个文件可能包含着关键的数据结构、配置信息或是日志文件,具体作用需要查看源码内容才能确定。 根据以上信息,我们可以推测这个身份证查验系统可能涉及以下知识点: 1. PHP基础:包括变量、...

    Test

    - 输入验证:对用户输入进行过滤和校验,防止SQL注入、XSS攻击。 - 密码哈希:使用加盐哈希存储用户密码,增强安全性。 - CSRF防护:使用令牌防止跨站请求伪造。 以上是关于PHP的一些核心知识点,它们构成了PHP...

Global site tag (gtag.js) - Google Analytics