我想创建只有管理员可以执行所有的CRUD操作,但其他用户只能创建和更新的帖子的应用程序。 我没有找到基于RBAC但只用于高级模板,但我使用的基本模板的教程。 我也跟着yii2指导,但我不懂得这个像执行./yii RBAC /初始化控制台命令。 我该怎么做?
Answer 1:
首先创造了一个辅助类中调用的模型文件夹PermissionHelpers:
namespace app\models;
use Yii;
class PermissionHelpers {
public static function requireAdmin() {
if(Yii::$app->user->identity->role == 100)
{
return true;
}
else return false;
}
}
然后更新您的控制器:
// at top with your other use
use yii\filters\AccessControl;
use app\models\PermissionHelpers;
// first function inside the class
public function behaviors()
{
return [
'access' => [
'class' => AccessControl::className(),
'only' => ['privateaction1', 'privateaction2'],
'rules' => [
[
'actions' => ['privateaction1', 'privateaction2'],
'allow' => true,
'roles' => ['@'],
'matchCallback' => function($rule, $action) {
return PermissionHelpers::requireAdmin();
}
],
],
],
}
现在你需要更新自己在DB与角色= 100,和你设置。
我使用的是高级模板自己,所以可能会有小的变化对命名空间和这样的。 但它应该是相当容易弄清楚。 祝好运!
文章来源: RBAC for basic yii2 template