Yii2 rbac权限控制之rule教程详解_php实例
在我们之前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 |
|
接着,我们才可以去后台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 |
|
最后就是验证了,到底我们所实现的rule认证起作用了没呢?
测试步骤如下可做参考:
1.当前用户创建一篇文章,记得记录当前文章的创建者,其角色是管理员,我们默认User::ROLE_ADMIN
2.创建一个普通用户,且也创建一篇文章,同时也需要记录当前文章的创建者
3.分别用管理员帐号和普通用户登录系统修改这两篇文章,结论自然是满足我们一开始所提的需求,管理员两篇文章均可修改,普通用户只能修改自己的文章
以上所述是小编给大家介绍的Yii2 rbac权限控制之rule教程详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

핫 AI 도구

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

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

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

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

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

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

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

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

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

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

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

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

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

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