yii2-RBAC-rest api开发思路
来源:互联网 发布:人工智能的最新发展 编辑:程序博客网 时间:2024/05/25 20:00
rest api是通过资源请求的,所以不像一般的/add /edit等来判断是否拥有权限。
我们可以写个方法一键写入权限的时候默认增加 ,其实和常规的YII2 RBAC权限一样的做法,我就不在这里详细说RBAC怎么做了,网上也有很多资料,我会提下,网上教程没有的,角色添加后的编辑怎么操作
/index = get请求
/create = post请求
/update = put/patch请求
/options = delete;
- 一键写入权限
//一键插入所有权限 public function actionInit() { $trans = Yii::$app->db->beginTransaction(); $controllers_name = array(); try { $dir = yii::$app->basePath . '/modules'; $controllers = glob($dir . '/*'); foreach ($controllers as $k => $value) { $controllers[$k] = $value . '/controllers/OrmController.php'; $controllers_name[$k] = substr($value, strrpos($value, '/') + 1); } $permissions = []; foreach ($controllers as $k => $controller) { $content = file_get_contents($controller); //正则匹配拿到控制器名称,但我们一般都是Orm preg_match('/class ([a-zA-Z]+)Controller/', $content, $match); $cName = $match[1]; $permissions[] = strtolower($controllers_name[$k] . '/' . $cName . '/*'); $permissions[] = strtolower($controllers_name[$k] . '/' . $cName . '/index'); $permissions[] = strtolower($controllers_name[$k] . '/' . $cName . '/create'); $permissions[] = strtolower($controllers_name[$k] . '/' . $cName . '/update'); $permissions[] = strtolower($controllers_name[$k] . '/' . $cName . '/options'); //正则找方法 preg_match_all('/public function action([a-zA-Z_]+)/', $content, $matches); foreach ($matches[1] as $aName) { $permissions[] = strtolower($controllers_name[$k] . '/' . $cName . '/' . $aName); } } foreach ($permissions as $k => $v) { if (substr($v, -2) === '/s') { unset($permissions[$k]); } } $permissions = array_values($permissions); $auth = Yii::$app->authManager; foreach ($permissions as $permission) { if (!$auth->getPermission($permission)) { $obj = $auth->createPermission($permission); $obj->description = $permission; $auth->add($obj); } } $trans->commit(); return "import success"; } catch (\Exception $e) { $trans->rollback(); return "import failed "; } }
- 控制器继承的公共控制器进行判断资源请求
$controller = $action->controller->module->id;//控制器名称 $actionName = $action->id;//方法名称 $method = Yii::$app->request->method; if (Yii::$app->user->can($controller. '/orm/*')) { return true; } if ($method == 'POST') { if (!Yii::$app->user->can($controller . '/orm/create')) { throw new UserException('请求不允许'); } } if ($method == 'GET') { if (!Yii::$app->user->can($controller . '/orm/index')) { throw new UserException('请求不允许'); } } if ($method == 'PATCH' || $method == 'PUT') { if (!Yii::$app->user->can($controller . '/orm/update')) { throw new UserException('请求不允许'); } } if (Yii::$app->user->can($controller . '/orm/' . $actionName)) { return true; } return true; throw new UserException('对不起,您没有访问' . $controller . '/' . $actionName . '的权限');
- 角色添加后的编辑怎么操作
public function actionEditrole($name) { if (Yii::$app->request->isPost) { $authManager = Yii::$app->authManager; $post=Yii::$app->request->post(); $role = $authManager->getRole($name); $role->name = $post['name']; $role->description = $post['description']; if(!$authManager->update($name,$role)){ //$name:老名字 $role:新对象 throw new UserException('编辑失败'); }; return '编辑角色成功'; } }
阅读全文
0 0
- yii2-RBAC-rest api开发思路
- Yii2 RBAC
- Yii2 验证码 captcha for rest api
- SpringBoot Rest-api开发
- YII2框架RBAC 自己开发(权限控制)实例运用
- Yii2的RESTful API开发
- WeixiStyle Yii2 RESTful API 开发
- Yii2 使用十三 RBAC
- yii2 rbac 详解
- YII2 RBAC用法
- yii2自带rbac
- yii2-rbac权限设置
- YII2 学习笔记-- RBAC
- yii2.0Rbac操作
- Rest API 开发 学习笔记
- Rest API 开发 学习笔记
- Rest API 开发 学习笔记
- Rest API 开发 学习笔记
- HDFS基本概念篇
- mysql 中的判断语句(case、if)
- 带宽
- 实现一个简单的shared_ptr
- 美团和滴滴面经
- yii2-RBAC-rest api开发思路
- 4.jsp隐藏对象
- CentOS 6.5系统中iptables防火墙开放端口
- JVN虚拟机结构图
- C++程序设计范例实训实训教程
- shared_ptr造成的循环引用&&解决方法和原理(弱引用&&强引用)
- 上传图片实现图片预览
- C++ 函数模板和类模板简单总结一下
- Solr的安装配置