【发布时间】:2015-03-10 09:53:56
【问题描述】:
我按照本指南 (http://www.yiiframework.com/doc-2.0/guide-security-authorization.html) 操作,但仍然出现错误。
我已经创建了 auth_item、auth_item_chid、auth_assignment 和 auth_rule 表
当我将此行添加到我的控制器时
if (\Yii::$app->user->can('createPost')) { //mycode ... }
我收到错误 -> 找不到规则:作者
protected function executeRule($user, $item, $params)
{
if ($item->ruleName === null) {
return true;
}
$rule = $this->getRule($item->ruleName);
if ($rule instanceof Rule) {
return $rule->execute($user, $item, $params);
} else {
throw new InvalidConfigException("Rule not found: {$item->ruleName}");
}
}
我已经在 auth_item 表中为用户分配了一个角色,auth_item 已经有 auth_item_chid。 在 Yii2 上,所有 auth_item 都应该设置为 rule_name。这和以前的版本不同。
【问题讨论】:
-
能否展示一下您的表格的相关内容?我想这就是问题所在。您在 auth_rule 中有条目吗?
-
我看了这个视频youtube.com/watch?v=eFOIUeU-Y74,我在视频评论块上使用了查询
-
奇怪的是,您检查了“createPost”,但没有找到“作者”。请提供您的表格的相关行。
-
我第二,你可能在表格中遗漏了一些东西
-
添加 auth_item 时出现此错误。 SQLSTATE [23000]:完整性约束违规:1452 无法添加或更新子行:外键约束失败(
yii2advanced.auth_item,CONSTRAINTauth_item_ibfk_1FOREIGN KEY (rule_name) REFERENCESauth_rule(@987654330 @) ON DELETE SET NULL ON UPDATE CASCADE) 正在执行的 SQL 是:INSERT INTOauth_item(name,type,description,rule_name,data,created_at,updated_at)值('网站管理员',1,'','','',NULL,NULL)