我正在关注http://www.yiiframework.com/doc-2.0/guide-security-authorization.html#access-check以实施RBAC。当我使用这个
时if (\Yii::$app->user->can('createPost')) {
// create post
}
SiteController的actionLogin()函数中的
我收到错误Call to a member function checkAccess() on a non-object yii2
你能找到解决方法吗? 我的RBAC配置是
'authManager' => [
'class' => 'yii\rbac\PhpManager',
'itemFile' => '@app/rbac/items.php',
'assignmentFile' => '@app/rbac/assignments.php',
'ruleFile' => '@app/rbac/rules.php',
],
我正在尝试在站点控制器的
中使用它public function actionLogin()
{
if (!\Yii::$app->user->isGuest) {
return $this->goHome();
}
$model = new LoginForm();
if ($model->load(Yii::$app->request->post()) && $model->login()) {
print_r(\Yii::$app->user->can('createPost'));exit;
}}
答案 0 :(得分:0)
我认为你不能在那里调用\ Yii :: $ app->用户,因为用户没有登录,因此错误。
您应该事先检查他是否是客人
if (!\Yii::$app->user->isGuest && \Yii::$app->user->can('createPost')) {
// create post
}
答案 1 :(得分:0)
您应该配置用户组件:
http://www.yiiframework.com/doc-2.0/yii-web-user.html
如何对用户进行身份验证的逻辑应该在实现yii \ web \ IdentityInterface的类中完成。您还需要使用此类的名称设置$ identityClass。
默认情况下,用户在yii \ web \ Application中配置为应用程序组件。您可以通过Yii :: $ app-> user。
访问该实例您可以通过在组件下的应用程序配置中添加一个数组来修改其配置,如下例所示:
'user' => [
'identityClass' => 'app\models\User', // User must implement the IdentityInterface
'enableAutoLogin' => true,
// 'loginUrl' => ['user/login'],
// ...
]