我有一个名为user的表,其中有一个称为estauto的字段
只有estauto==admin的用户才能在main.php文件中的NavBar小部件中看到admin超链接。
我的问题是办理登机手续:
'label' => 'Admin', 'visible' => !Yii::$app->user->isGuest,
如果用户使用estauto==admin登录,并且只有在这种情况下才会显示admin超链接。
我只能检查用户是否为Guest。
我需要类似的东西:
'label' => 'Admin', 'visible' => !Yii::$app->user->isGuest && User::estatuto = 'admin',
我搜索了很多,唯一看到但无法理解的是:
$this->view->params['customParam'] = 'customValue';
但也许还有另一个机会。
有人能帮我解决这个问题吗
您的任务不是验证模型字段,而是经典的权限管理任务。所以您应该使用Yii2 RBAC功能。在这种情况下,你可以这样检查权限:
'Yii::$app->user->can('viewAdminMenu')
当用户登录时,将estauto的值存储在会话中。
然后在任何时候都可以从会话中调用该值。
也不要设置访问的可见标记。如果不是管理员,则不需要显示整个链接。此外,仅仅隐藏链接是不够的,您还需要检查控制器内的访问权限。
更好的方法是使用基于角色的访问控制(RBAC)。