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