如何给用户添加角色?

2024-03-02

我们使用 Yii2 框架的最后一个 alpha 版。用户的角色已经创建,但问题是如何分配给用户。缺少文档。


对于 RBAC 的数据库版本,请使用 DbManager(引用自 Alexufo):

use yii\rbac\DbManager;
$r=new DbManager;
$r->init();
$r->createRole("admin","Administrator");
$r->save();

$r->assign('1','admin');   //1 is user id 

访问规则示例:

<?php
namespace backend\controllers;

use yii;
use yii\web\AccessControl;
use yii\web\Controller;

class SiteController extends Controller
{
    public function behaviors()
    {
        return [
            'access' => [
                'class' => AccessControl::className(),
                'rules' => [
                    [
                        //'actions' => ['login', 'error'], // Define specific actions
                        'allow' => true, // Has access
                        'roles' => ['@'], // '@' All logged in users / or your access role e.g. 'admin', 'user'
                    ],
                    [
                        'allow' => false, // Do not have access
                        'roles'=>['?'], // Guests '?'
                    ],
                ],
            ],
        ];
    }

    public function actionIndex()
    {
        return $this->render( 'index' );
    }
}
?>

不要忘记将其添加到您的配置文件(config/main.php)中:

'components' => [
    'authManager'=>array(
        'class' => 'yii\rbac\DbManager',
        'defaultRoles' => ['end-user'],
    ),
    ...
]

Tables:

drop table if exists `tbl_auth_assignment`;
drop table if exists `tbl_auth_item_child`;
drop table if exists `tbl_auth_item`;

create table `tbl_auth_item`
(
   `name`                 varchar(64) not null,
   `type`                 integer not null,
   `description`          text,
   `biz_rule`              text,
   `data`                 text,
   primary key (`name`),
   key `type` (`type`)
) engine InnoDB;

create table `tbl_auth_item_child`
(
   `parent`               varchar(64) not null,
   `child`                varchar(64) not null,
   primary key (`parent`,`child`),
   foreign key (`parent`) references `tbl_auth_item` (`name`) on delete cascade on update cascade,
   foreign key (`child`) references `tbl_auth_item` (`name`) on delete cascade on update cascade
) engine InnoDB;

create table `tbl_auth_assignment`
(
   `item_name`            varchar(64) not null,
   `user_id`              varchar(64) not null,
   `biz_rule`              text,
   `data`                 text,
   primary key (`item_name`,`user_id`),
   foreign key (`item_name`) references `tbl_auth_item` (`name`) on delete cascade on update cascade
) engine InnoDB;

您还可以在“yii/rbac”目录(包括其他 SQL 文件)中找到此信息。 有关功能和更多详细信息:

https://github.com/yiisoft/yii2/blob/master/docs/guide/security-authorization.md https://github.com/yiisoft/yii2/blob/master/docs/guide/security-authorization.md

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何给用户添加角色? 的相关文章

  • 禁用/启用用户访问/下载,但允许 php 编辑 - 使用 chown 和 chmod

    我想 move uploaded files到某个文件夹 比方说http localhost myproject protected 并且 PHP 应该能够rm mv cp 里面的一切protected 例如 启用 禁用用户对任何文件的访问
  • SQLSTATE[HY000] [2002] 资源暂时不可用 - mysql - innodb 和 pdo

    在我的错误日志中得到大量结果 如下所列 数据库中的所有表都是 innodb 并且就与这些表的任何交互而言 一切都是带有准备好的语句的 pdo 正如我所说 所有错误几乎与下面列出的错误相同 但发生在几个不同的页面上 无论页面如何 错误行始终指
  • 在 CentOS 中安装 PHP Zip 扩展

    我正在尝试在 CentOS 中安装 PHP Zip 扩展 我的服务器没有外部互联网访问权限 所以我自己从 PECL 下载了它 http pecl php net package zip http pecl php net package z
  • 将字符串的第一个字母大写(前面带有特殊字符) - PHP

    我想将字符串大写 例如 hello 我希望我的函数返回 Hello 我尝试过使用 regex 和 preg match 但没有运气 这是我之前的问题 与此相关 preg match 正在匹配两个字符 而它应该只匹配一个字符 https st
  • Facebook 扩展权限

    更新2 好的 通过更改使其 有点 工作 loginUrl facebook gt getLoginUrl array canvas gt 1 fbconnect gt 0 req perms gt publish stream next g
  • 如何改进 PHP 分页算法?

    我正在研究 PHP 中的分页算法 我可以猜测它需要改进的空间 所以我想对如何改进它有一些想法 无论是从 UI UX 的角度清理代码本身 还是你能想到的任何其他东西 该算法应输出如下所示的分页 1 2 3 6 7 8 97 98 99 or
  • 这是过滤数据并防止 SQL 注入和其他攻击的安全方法吗?

    我创建了两个简单的函数来在插入数据进入 mysql 查询之前对其进行过滤 对于表单字段 我还使用正则表达式来单独检查每个字段 Form filter function filter var HTML is not allowed var s
  • 我们可以在 Bash 脚本中使用 PHP 吗?

    我有一个 bash 脚本abcd sh bin sh for i in seq 8 do ssh w i uptime ps elf grep httpd wc l free m mpstat done pid sleep 1 kill 9
  • 如何在 SQLite 中获取最后插入的 ID?

    SQLite 中是否有任何内置函数可以获取最后插入的行 ID 例如 在 mysql 中我们有LAST INSERT ID 这种功能 对于 sqlite 任何可用于执行相同过程的函数 请帮我 Thanks SQLite 这可以使用SQLite
  • php/symfony/doctrine 内存泄漏?

    我在使用 symfony 1 4 和原则 1 2 将对象批量插入数据库时 遇到问题 我的模型有一种称为 Sector 的对象 每个对象都有多个 Cupo 类型的对象 通常范围从 50 到 200000 这些物体非常小 只是一个短标识符字符串
  • PHP 多个 Ajax 请求:第一个请求阻止第二个请求

    我在一页上有 2 个 ajax 请求 我运行了第一个请求并单独启动了第二个请求 但第二个在第一个运行后停止工作 第一次结束后继续 第一个请求需要很长时间 大约 30 60 秒 此时我需要第二个请求来显示日志第一个请求发生的情况 我尝试使用
  • 使用活动目录对 Intranet 站点上的用户进行身份验证

    我建立了一个 内联网 站点 它有自己的登录系统 用户注册为新用户 并使用其上的用户名 密码登录该站点 但是 现在我想扩展它 让 Intranet 站点使用现有的 ActiveDirectory 进行身份验证 这就是我正在寻找的 前进 当用户
  • FPM 与 apache2 无法工作(权限被拒绝)

    我正在尝试使用 apache fastcgi 和 fpm 设置一个 Debian Web 服务器 但我越来越恼火 一旦我停用 mod php 我就会收到以下错误 2014 年 5 月 22 日星期四 12 16 10 错误 客户端 xxx
  • 我应该在 Symfony 中哪里放置既不是控制器也不是模型的类?

    对于我的应用程序包 我需要一些既不是控制器也不是模型的类 例如 我想要一个scorecard具有诸如 技能 效率 美丽 等成员的类 此外 它可能具有诸如 meanScore 之类的成员方法 getters 这样的类在 Symfony 框架中
  • 根据重复值对 PHP 数组进行排序

    我有一个包含重复值的数组 我想对数组进行排序 以便重复次数最多的值出现在行中的第一个 这是我的数组的示例 array 1 2 3 2 1 2 2 我想对该数组进行排序 以便它根据重复项的数量对自身进行排序 如下所示 array 2 1 3
  • Sublime Text 编辑器中的 PHP 语法检查

    在Gedit中 我可以在当前文档上添加 php l 外部工具 如果我安装了PHP命令行 它将对文档进行语法检查 有没有办法用 Sublime Text 编辑器来做到这一点 注意 我有一台 Mac 并且安装了 PHP CLI 我想我必须将代码
  • 什么是 PHP session_start()

    它是否基于 cookie 启动当前会话 从 PHP 网站上得到的 PHP如何控制会话 如果我在用户打开我的登录页面时启动会话 我什至可以使用该会话做什么 我可以使用当前会话来获取有关登录用户的信息吗 PHP 会话系统允许您将数据安全地存储在
  • 如何在没有 SSH 和 CLI 访问生产的情况下部署 symfony 项目 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 大多数托管提供商仅具有 FTP 访问权限 是否可以 常见地进行 symfony 项目 3 x 或 4 x 的本地安装 然后通过 FTP 上
  • 将 docker-compose.yml 中的包安装到 docker 容器中

    我是 docker 和 docker compose 的初学者 我需要你的帮助 我正在使用 docker compose 制作 PHP NGINX PostgresQL symfony 开发环境 这里是 web image nginx 1
  • 单元测试和静态方法

    阅读并学习单元测试 试图理解以下帖子 http misko hevery com 2008 12 15 static methods are death to testability 这解释了静态函数调用的困难 我不太清楚这个问题 我一直认

随机推荐

  • 如何在 GNU Emacs 中逐行滚动?

    To put it simply I m trying to get scrolling in emacs like in vim and most other editors when I m for example two lines
  • FabricJS 文本框 - 某些字体的光标位置设置不正确

    在上图中 光标应该位于末尾 但由于某种原因 它被放置在最后一个字符之前 这只发生在某些字体上 我认为这与自定义字体的加载方式无关 该图像取自http fabricjs com loadfonts http fabricjs com load
  • 聚类和贝叶斯分类器 Matlab

    因此 我正处于下一步该做什么的十字路口 我开始学习一些机器学习算法并将其应用于复杂的数据集 现在我已经做到了 我从一开始的计划就是结合两种可能的分类器 试图建立一个多分类系统 但这就是我被困住的地方 我选择聚类算法 模糊 C 均值 在学习了
  • python yaml.dump 错误缩进

    我正在执行以下 python 代码 import yaml foo name foo my list foo test bar test2 foo test3 bar test4 hello world print yaml dump fo
  • 如何从 C# 显示文件属性对话框安全选项卡

    这个帖子 如何从 C 显示文件的 属性 对话框 https stackoverflow com questions 1936682 how do i display a files properties dialog from c描述了如何
  • 如何在 Angular 中使用 *ngFor 设置 formControlNames?

    我正在尝试使用设置表单控件 ngFor数组中的对象 根据用户的不同 有时我的数组中会有 1 个对象 但有时会有多个对象 我的问题是我想创建一个formControlName使用我可以但不确定如何在组件中设置表单组验证器的循环 只需像下面这样
  • 如何通过抽象活动记录向子类添加范围

    我想要一些子类 它们都应该有一个范围 同名 尽管我知道直接继承不可能做到这一点 但基本思想如下 class MySuperClass lt lt ActiveRecord Base abstract class true scope sco
  • 如何将文件添加到以前的提交?

    在过去的一个小时左右我修改了文件 A ATest B BTest 为了确保我的提交消息与实际更改一致 已提交A并附有说明 不幸的是我没有包括在内ATest进入该提交 与此同时 尚未承诺的是B and BTest 此时最好的方法是什么 我想要
  • 为什么这条线没有被覆盖? Xcode 代码覆盖率

    我在 Xcode 中的代码覆盖率报告中遇到问题 从这个截图中你可以看到 在左侧选项卡上 第 58 行从断点 触及 在右侧选项卡上 测试通过 在右侧选项卡上 我仅运行第 37 行的测试 为什么 Xcode 将第 58 行标记为红色 因为未覆盖
  • Xcode C++ omp.h 文件未找到

    我正在尝试将 openmp 包含到我的 Xcode C 项目中 我已将 Xcode 中的编译器更改为 LLVM GCC 4 2 添加 fopenmp 作为 CFlag 并在 xcode 中启用了 OpenMP 支持 但它仍然显示 omp h
  • 最大活动数量!

    是否有关于应用程序可以拥有的活动数量的设计指南 如果有限制 那么可以在 Android 应用程序中捆绑的理想活动数量是多少 IMO 没有这样的限制 典型的应用程序将有
  • 如何检查一个对象是否具有属性?

    如何检查一个对象是否具有某些属性 例如 gt gt gt a SomeClass gt gt gt a property Traceback most recent call last File
  • SEO 和在 url 中使用 !#

    我在某处读到过如何创建一个网站 该网站使用 AJAX 加载页面的每个部分 同时仍然提供 SEO 这与 url 中使用 有关 类似于推特的做法 我似乎在任何地方都找不到任何有关它的信息 有人知道我在说什么吗 Is this http goog
  • 使用 Microsoft Teams 的 REST API 访问用户状态

    我想查询我自己和其他用户在 Teams 中的状态 理想情况下 我希望在它们发生变化时收到通知 以便我可以更改我的内部状态 目前图形 API 似乎没有此功能 不幸的是 这尚不可用 我们确实计划将其添加到 Microsoft Graph 但我们
  • 是否有一个 Java 库可以收集 UI 使用情况统计信息?

    是否有一个 Java 库可以收集 UI 使用情况统计信息 感觉像 log4j 的东西吗 如果您正在使用 Eclipse 平台 您可能会查看使用数据收集器项目 http www eclipse org epp usagedata http w
  • Magento 发票 Excel 导出 - 如何更改字段?

    我想将一些发票导出到 Microsoft Excel XML 标准格式效果不太好 因为我需要一些额外的列 我的问题是 文件在哪里生成 我在哪里设置这些特殊列 提前致谢 导出到 Excel 时执行InvoiceController calls
  • 如何确定平衡或完全平衡的二叉搜索树(仅从图片中)

    我不知道如何确定一棵树是否平衡 完全平衡 或者如果我将它作为图片而不是代码来确定它是否平衡 例如 如果我有这棵树 如何检查它是平衡 完美平衡还是不平衡 有人能给我一个完美平衡树的例子吗 o b p d m r 显然 如果是这样的话 我可以判
  • catch forEach 最后一次迭代

    arr 1 2 3 arr forEach function i last iteration 如何捕获循环结束的时间 我可以if i 3 但我可能不知道我的数组的编号是多少 另请参阅ES6 的更新答案 https stackoverflo
  • Outlook 超链接上下文菜单

    我正在尝试为超链接制作上下文菜单 似乎有几个上下文可以拦截超链接事件 目前我对 idMso ContextMenuReadOnlyMailHyperlink 的上下文菜单感兴趣 有两种不同的方式可以执行此菜单中新按钮的回调 如果在 Outl
  • 如何给用户添加角色?

    我们使用 Yii2 框架的最后一个 alpha 版 用户的角色已经创建 但问题是如何分配给用户 缺少文档 对于 RBAC 的数据库版本 请使用 DbManager 引用自 Alexufo use yii rbac DbManager r n