백엔드 개발 PHP 튜토리얼 Yii2 rbac权限控制之rule教程详解_php实例

Yii2 rbac权限控制之rule教程详解_php实例

Jul 06, 2016 pm 01:32 PM
rbac rbac 권한 제어 yii2

在我们之前Yii2搭建后台并实现rbac权限控制完整实例教程中,不知道你曾经疑惑过没有一个问题,rule表是做什么的,为什么在整个过程中我们都没有涉及到这张表?

相信我不说,部分人也都会去尝试,或百度或google,到头来也会竹篮打水,这部分讲解的内容少之又少啊!

对于一般的权限系统而言,我们之前做的rbac一般情况下是足够的,即时没有rule,相信你也能实现我们用rule实现的功能。

我们就以官网的例子给出一个具体的操作教程,看看这个神秘的rule到底是做什么的!

看需求:

我们有管理员和普通用户,对于文章系统而言,我们允许管理员对文章的任何操作,但是只允许普通用户创建文章和修改自己创建的文章,注意哦,是允许其修改自己创建的文章,不是不允许修改文章,也不是修改所有的文章!

看yii2 rbac rule怎么去实现,重点是教大家怎么去使用这个rule,也解开众多人心中的节!

在我们添加rule之前,需要先实现 yii\rbac\Rule类的execute方法。

1

2

3

4

5

6

7

8

9

10

11

12

13

<&#63;php

namespace backend\components;

use Yii;

use yii\rbac\Rule;

class ArticleRule extends Rule

{

public $name = 'article';

public function execute($user, $item, $params)

{

// 这里先设置为false,逻辑上后面再完善

return false;

}

}

로그인 후 복사

接着,我们才可以去后台rule列表(/admin/rule/index)添加rule。具体添加方式可参考下方截图

注意,上面这一步很多人会死在类名的添加上,记得加上我们ArticleRule文件所在的命名空间!

我们看第三步,该步骤也是很容易出错的地方!该篇教程请注意集中精力,前方高能!

我们访问权限列表(/admin/permission/index)新增权限,该权限只针对文章的修改,随后我们将其分配给用户所属角色

需要注意了,此处严重警告,这里新增加的权限所控制的路由也就是文章的更新操作(/article/update)分配给当前用户仅且一次,重复分配当前操作给所属角色或用户,可能造成rule失效,失效原因则是覆盖!

此刻再次刷新文章的更新页面(/article/update/1),很显然直接给我们了403 forbidden没权限访问的提示,也就是我们刚刚添加的rule生效了!如果此刻没生效,请检查上面所说的两个注意点!

然后我们实现ArticleRule::execute方法内业务逻辑,可参考如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

class ArticleRule extends Rule

{

public $name = 'article';

/**

* @param string|integer $user 当前登录用户的uid

* @param Item $item 所属规则rule,也就是我们后面要进行的新增规则

* @param array $params 当前请求携带的参数.

* @return true或false.true用户可访问 false用户不可访问

*/

public function execute($user, $item, $params)

{

$id = isset($params['id']) &#63; $params['id'] : null;

if (!$id) {

return false;

}

$model = Article::findOne($id);

if (!$model) {

return false;

}

$username = Yii::$app->user->identity->username;

$role = Yii::$app->user->identity->role;

if ($role == User::ROLE_ADMIN || $username == $model->operate) {

return true;

}

return false;

}

}

로그인 후 복사

最后就是验证了,到底我们所实现的rule认证起作用了没呢?

测试步骤如下可做参考:

1.当前用户创建一篇文章,记得记录当前文章的创建者,其角色是管理员,我们默认User::ROLE_ADMIN

2.创建一个普通用户,且也创建一篇文章,同时也需要记录当前文章的创建者

3.分别用管理员帐号和普通用户登录系统修改这两篇文章,结论自然是满足我们一开始所提的需求,管理员两篇文章均可修改,普通用户只能修改自己的文章

以上所述是小编给大家介绍的Yii2 rbac权限控制之rule教程详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

<gum> : Bubble Gum Simulator Infinity- 로얄 키를 얻고 사용하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
Nordhold : Fusion System, 설명
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora : 마녀 트리의 속삭임 - Grappling Hook 잠금 해제 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

yii2에서 jquery를 제거하는 방법 yii2에서 jquery를 제거하는 방법 Feb 17, 2023 am 09:55 AM

yii2에서 jquery를 제거하는 방법: 1. AppAsset.php 파일을 편집하고 $dependents 변수의 "yii\web\YiiAsset" 값을 주석 처리합니다. 2. main.php 파일을 편집하고 구성을 "'yii"로 추가합니다. "comComponents" \web\JqueryAsset' => ['js' => [],'sourcePath' => null,]" 필드 아래에서 jquery 스크립트를 제거합니다.

역할 기반 액세스 제어(RBAC) 구현: PHP 및 RBAC 사용 역할 기반 액세스 제어(RBAC) 구현: PHP 및 RBAC 사용 Jun 20, 2023 pm 10:39 PM

인터넷 애플리케이션이 대중화되면서 민감한 데이터가 오용되거나 도난당하지 않도록 애플리케이션 내의 데이터를 보호할 수 있기를 바랍니다. 해결 방법 중 하나는 역할 기반 액세스 제어(RBAC)를 사용하는 것입니다. RBAC(역할 기반 액세스 제어)는 사용자와 역할 간의 관계를 기반으로 하는 액세스 제어 모델입니다. 이 모델의 핵심 아이디어는 접근 제어 작업을 사용자에게 직접 연결하는 것이 아니라 사용자의 역할을 접근 제어 작업에 연결하는 것입니다. 이 접근 방식은 액세스 제어의 유연성을 향상시킵니다.

몇 가지 선택된 CTF 연습은 yii2 프레임워크를 배우는 데 도움이 될 것입니다! 몇 가지 선택된 CTF 연습은 yii2 프레임워크를 배우는 데 도움이 될 것입니다! Feb 23, 2022 am 10:33 AM

이 기사에서는 yii2 프레임워크를 소개하고 몇 가지 CTF 연습을 공유하며 이를 사용하여 yii2 프레임워크를 학습하는 것이 모든 사람에게 도움이 되기를 바랍니다.

YII2 프레임워크를 사용하여 Redis 확장을 설치하는 방법 YII2 프레임워크를 사용하여 Redis 확장을 설치하는 방법 May 26, 2023 pm 06:41 PM

1. Composer가 포함된 yii2-redis 마스터 브랜치의 Windows 버전을 다운로드해야 합니다. 2. 압축을 풀고 Vendor/yiisoft에 복사합니다. 3. 'yiisoft/yii2-redis'=>array('name'=>'yiisoft 추가 yiisoft /yii2-redis','version'=>'2.0 아래의 Extensions.php로.

YII2에서 오류 프롬프트를 표시하는 방법 YII2에서 오류 프롬프트를 표시하는 방법 Apr 18, 2025 pm 11:09 PM

YII2에는 오류 프롬프트를 표시하는 두 가지 주요 방법이 있습니다. 하나는 yii :: $ app- & amp; gt; errorhandler- & amp; gt; exception ()을 사용하여 예외가 발생할 때 오류를 자동으로 잡고 표시하는 것입니다. 다른 하나는 $ this- & amp; gt; adderror ()를 사용하는 것인데, 이는 모델 유효성 검사가 실패 할 때 오류가 표시되며 $ model- & amp; gt; getErrors ()를 통해 뷰에서 액세스 할 수 있습니다. 보기에서 if ($ errors = $ model- & amp; gt; getErrors ())를 사용할 수 있습니다.

ThinkPHP6에서 RBAC 권한을 어떻게 관리하나요? ThinkPHP6에서 RBAC 권한을 어떻게 관리하나요? Jun 12, 2023 am 08:10 AM

인터넷이 지속적으로 발전하고 애플리케이션이 널리 사용됨에 따라 민감한 정보와 리소스의 보안을 보장하기 위해 액세스 제어가 필요한 웹사이트와 애플리케이션이 점점 더 많아지고 있습니다. 프로젝트의 지속적인 개발과 기능의 지속적인 증가로 인해 RBAC 권한 관리 시스템은 매우 대중적이고 성숙한 솔루션이 되었습니다. 이 기사에서는 ThinkPHP6 프레임워크에서 권한 관리를 위해 RBAC를 사용하는 방법을 소개합니다. RBAC 권한 관리란 무엇입니까? RBAC(역할 기반 액세스

PHP 기반 액세스 제어(RBAC) 인증의 역할을 마스터하세요. PHP 기반 액세스 제어(RBAC) 인증의 역할을 마스터하세요. Aug 07, 2023 pm 03:39 PM

PHP에서 역할 마스터하기 - RBAC(BasedAccessControl) 인증 소개: 인증은 웹 애플리케이션을 개발할 때 필수적인 기능입니다. RBAC(Role-BasedAccessControl)는 역할에 대한 액세스 제어를 관리하는 일반적으로 사용되는 인증 모드로, 권한 배포를 더욱 유연하고 유지 관리하기 쉽게 만듭니다. 이 기사에서는 PHP에서 RBAC 인증을 구현하는 방법을 소개하고 관련 코드 예제를 제공합니다. 1. RBAC의 역할 개요

Java JAAS의 최신 모범 사례 Java JAAS의 최신 모범 사례 Feb 23, 2024 pm 10:52 PM

1. JAAS 개요 JavaJAAS(JavaAuthenticationandAuthorizationService)는 다중 시스템 SSO(Single Sign-On) 통합, RBAC(역할 기반 액세스 제어) 및 권한 부여 관리를 위한 프레임워크입니다. JAAS를 사용하면 애플리케이션이 데이터나 리소스에 대한 액세스를 보호하고 액세스 제어 메커니즘을 정의할 수 있습니다. 2. JAAS의 최신 모범 사례 1. 인증을 위해 JAAS 사용 JAAS는 두 가지 주요 인증 방법을 제공합니다. 토큰 기반 인증: 이 방법은 토큰(예: 사용자 이름 및 비밀번호)을 사용하여 사용자 신원을 확인합니다. 인증 기반 인증: 이 방법은 인증(예: 디지털 인증서)을 사용하여 사용자의 신원을 확인합니다. 2

See all articles