Php 与RBAC Yii 2一起使用访问控制的最佳实践
我在我的应用程序中使用RBAC控件,通常我使用的是Php 与RBAC Yii 2一起使用访问控制的最佳实践,php,yii2,yii2-advanced-app,Php,Yii2,Yii2 Advanced App,我在我的应用程序中使用RBAC控件,通常我使用的是Yii::$app->user->can('permission')。 但我有一些问题,当我将访问控制与RBAC相结合时,它不起作用。例如我的代码: public function behaviors() { return [ 'access' => [ 'class' => AccessControl::className(), 'ruleConfig' =&g
Yii::$app->user->can('permission')
。
但我有一些问题,当我将访问控制与RBAC相结合时,它不起作用。例如我的代码:
public function behaviors() {
return [
'access' => [
'class' => AccessControl::className(),
'ruleConfig' => [
'class' => AccessRule::className(),
],
'only' => ['test', 'view', 'index', 'ajaxdatevehicle', 'price_list', 'ajax_suggest_area', 'view-admin'],
'rules' => [
[
'actions' => ['test', 'view', 'index', 'ajaxdatevehicle', 'price_list', 'ajax_suggest_area', 'view-admin'],
'allow' => false,
'roles' => [
'?',
],
],
[
'actions' => ['test', 'view', 'index', 'ajaxdatevehicle', 'price_list', 'ajax_suggest_area', 'view-admin'],
'allow' => true,
'roles' => [
'@',
],
],
[
'actions' => ['index'],
'allow' => true,
'roles' => ['?'],
],
[
// This is the problem
'actions' => ['view'],
'allow' => true,
'roles' => [
'?',
User::ROLE_CUSTOMER,
Yii::$app->user->can('customer'),
],
],
],
],
'verbs' => [
'class' => VerbFilter::className(),
'actions' => [
'delete' => ['post'],
],
],
];
}
我希望页面“视图”只能由客户访问,那么如何解决这个问题呢
或者最好的做法是什么
这样谢谢你
[
// This is the problem
'actions' => ['view'],
'allow' => true,
'roles' => ['customer'],
],
这只是我的观点,但我不确定是否每个控制器都加入这样的行为是最好的方法。它看起来有点凌乱,在需要的时候改变一切也不快。我建议您检查此模块。如果您不想使用它(并且想构建自己的rbac系统),您可以测试它,看看它是如何工作的。您不必在控制器中进行任何编辑,只需正确配置所有内容,并在数据库中正确添加权限即可。