Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Yii2:在注册模型中添加分配角色_Yii2_Yii2 Basic App_Rbac - Fatal编程技术网

Yii2:在注册模型中添加分配角色

Yii2:在注册模型中添加分配角色,yii2,yii2-basic-app,rbac,Yii2,Yii2 Basic App,Rbac,我使用的是Yii2基本模板,我想在用户注册时分配角色 请检查以下代码: public function signup() { if (!$this->validate()) { return null; } $user = new User(); $user->fname = $this->fname; $user->mname = $this->mname; $user->lname = $t

我使用的是Yii2基本模板,我想在用户注册时分配角色

请检查以下代码:

public function signup()
{
    if (!$this->validate()) {
        return null;
    }

    $user = new User();
    $user->fname = $this->fname;
    $user->mname = $this->mname;
    $user->lname = $this->lname;
    $user->address = $this->address;
    $user->username = $this->username;
    $user->email = $this->email;
    $user->setPassword($this->password);
    $user->generateAuthKey();

    $auth = new DbManager;
    $auth->init();
    $getrole = $auth->getRole($this->role);
    $auth->assign($getrole, Yii::$app->user->id);

    return $user->save() ? $user : null;
}

现在,这里的问题是,当用户注册时,将保存用户数据并插入新分配,但用户ID不正确

您需要知道用户ID才能将角色附加到它,并且在将用户保存到数据库之前无法知道它。因此,您需要先保存用户,然后使用保存模型中的ID分配角色:

if ($user->save()) {
    $auth = new DbManager;
    $auth->init();
    $getrole = $auth->getRole($this->role);
    $auth->assign($getrole, $user->id);

    return $user;
}

用户
模型保存后,您有了新的
用户id
<代码>Yii::$app->user->id表示登录的用户id,这里不是这种情况。在
$user->save()
之后通过
$user->id
$auth->Assign($getrole,$user->id)分配角色