gpt4 book ai didi

Yii2 RBAC 规则反馈/留言

转载 作者:行者123 更新时间:2023-12-04 21:36:38 26 4
gpt4 key购买 nike

这是一个关于 Yii2 中 RBAC 使用的问题。

到目前为止,我发现它工作得相当好且令人满意,但是我缺少一个关键功能:Yii2 规则提供“反馈”的能力与 Yii2 验证器设置错误消息以解释验证失败的原因类似.我正在寻找一种方法来提供有关为什么未授予许可的某种反馈。

特别是can()方法将返回一个 bool 类型,这很好,但是在检查权限时我们不知道 为什么正是用户没有被授予该特定权限。

举一个更实际的例子。假设我们正在尝试确定当前用户是否可以提交评论。我们通常会做这样的事情:

if (Yii::$app->user->can('postComment',['comment'=>$comment])) {
$comment->post();
} else {
throw new ForbiddenHttpException('Sorry m8, you cant do this. No idea why tho!');
}

它工作得很好,但如示例所示,我们真的不知道为什么用户无法发表评论。可能有多种原因,例如,因为线程被锁定,或者因为他们没有在某个类别中发帖的权限,或者因为他们没有足够高的声誉等。但我们想告诉用户原因!所以我的问题是,我们如何从 Yii2 的 RBAC 获得反馈?

最佳答案

您可能希望创建自己的 AccessRule 并通过覆盖该类中的当前方法来设置场景中的消息异常。 matchRole将是您要覆盖的方法。 Yii2 没有这个,所以你必须滚动你自己的 AccessRule 才能这样做。

然后一旦它创建将它附加到您的 Controller :

public function behaviors()
{
return [
'access' => [
'class' => AccessControl::className(),
'ruleConfig' => [
'class' => 'app\components\AccessRule'
],
'rules' => [
/* my normal rules */
],
],
];
}

关于Yii2 RBAC 规则反馈/留言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36353019/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com