在Yii2中具有基本用户模型时如何向用户添加角色

时间:2019-07-06 12:06:40

标签: yii2

使用Yii2的基本安装构建轻量级应用程序。 我需要为用户分配角色,但不想将用户和用户角色存储在数据库中。 如何为User-> users类中定义的用户设置角色?

默认用户模型和默认用户定义如下:

class User extends \yii\base\BaseObject implements \yii\web\IdentityInterface
{
    public $id;
    public $username;
    public $password;
    public $authKey;
    public $accessToken;

    private static $users = [
        '100' => [
            'id' => '100',
            'username' => 'admin',
            'password' => 'admin',
            'authKey' => 'test100key',
            'accessToken' => '100-token',
        ],

1 个答案:

答案 0 :(得分:2)

您可以使用RBAC PhpManager来代替,它将所有角色信息存储在文件中。

首先在config/web.php中配置您的AuthManager组件:

// ...
'components' => [
    // ...
    'authManager' => [
        'class' => 'yii\rbac\PhpManager',
    ],
    // ...
],

默认情况下,它使用3个文件来保存数据:

  • @app/rbac/items.php
  • @app/rbac/assignments.php
  • @app/rbac/rules.php

因此,请确保应用程序的根目录中有文件夹rbac,并且该文件夹可被www进程写入。如果要将文件放置在其他位置(或重命名),可以在配置中提供新路径,例如:

'authManager' => [
    'class' => 'yii\rbac\PhpManager',
    'itemFile' => // new path here for items,
    'assignmentFile' => // new path here for assignments,
    'ruleFile' => // new path here for rules,
],

现在剩下的就像在Authorization Guide中一样。

  1. 准备角色和权限(example in console command-设置所有角色后运行此命令;请记住,如果要在控制台中运行它,还需要使用相同的组件配置console.php)。 / li>
  2. 将角色分配给用户(example-这是在注册过程中完成的,但您也可以在上面的命令中完成此操作。)

现在您可以使用direct check or behavior configuration控制访问了。