对非对象yii2调用成员函数checkAccess()
我下面介绍如何实现RBAC。当我用这个的时候对非对象yii2调用成员函数checkAccess(),yii2,rbac,Yii2,Rbac,我下面介绍如何实现RBAC。当我用这个的时候 if (\Yii::$app->user->can('createPost')) { // create post } 在SiteController的actionLogin()函数中 我在非对象yii2上调用成员函数checkAccess()时出错 你能找出解决办法吗? 我的RBAC配置是 'authManager' => [ 'class' => 'yii\rbac\PhpManager',
if (\Yii::$app->user->can('createPost')) {
// create post
}
在SiteController的actionLogin()函数中
我在非对象yii2上调用成员函数checkAccess()时出错
你能找出解决办法吗?
我的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;
}}
我认为您不能在那里调用\Yii::$app->user,因为该用户未登录,因此出现错误 你应该事先检查他是否是客人
if (!\Yii::$app->user->isGuest && \Yii::$app->user->can('createPost')) {
// create post
}
您应该配置您的用户组件: 如何验证用户的逻辑应该在实现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'],
// ...
]