## 菜单
菜单的作用
> 用于定制后台的功能显示,和为权限控制提供节点。
如何添加、编辑、删除
> 添加、编辑后台权限
> 点“用户”->“权限管理”分组->"菜单管理"的菜单列表里“新增”按钮
> 菜单url,如注释那样,首页就填Index/index,无需admin,不区分大小,但最好和控制器里一样首字母大写,方法驼峰命名。
> 上级菜单,顶部菜单就选 “顶级菜单”,左侧的就选上级菜单。
分组,是左侧统计菜单,区分显示用的,比如用户下左侧菜单的“用户管理”和“行为管理”2个收缩,是用户下菜单分组里分别填写这2个区分开来的。都不填的话无分组显示。
隐藏 选‘是’,表示添加了该节点,当有访问授权的人进去改菜单上级菜单列表时,菜单上不显示。
开发者可见, 只得是仅在后台模式切换为开发者模式时可以显示。
添加、编辑前台模块权限
> 前台权限可在 用户 -》 权限管理 -》 新增前台权限节点 中添加,需要注意的是节点标识将被用于前台权限的检测。
前台开发模块时,检测权限采用check_auth()函数。函数实现代码如下
> function check_auth($rule, $type = AuthRuleModel::RULE_URL)
> {
> if (is_administrator()) {
> return true;//管理员允许访问任何页面
> }
> static $Auth = null;
> if (!$Auth) {
> $Auth = new ThinkAuth();
> }
> if (!$Auth->check($rule, get_uid(), $type)) {
> return false;
> }
> return true;
> }
可以看到,管理员是直接忽略权限的,接下来即采用Auth类进行检测。$rule参数就是新增权限时的节点标识。
与权限的关系
> 为权限管理提供节点和可判断的url规则(一些新增、配置按钮也要加菜单里去),并且权限管理 设置的权限 控制菜单的显示。安装的超级管理员账号除外,所有都能显示。
权限管理
> 系统并没有使用rbac作为权限控制,而是选择了扩展的auth类。
> 基本的验证单位
> 是后台菜单里写的url。
用户组
> 和rbac相似,OC里也分用户组和用户。用户属于某个用户组。针对用户组授权后,在权限管理的用户授权里在当前的分组选项里输入用户id可加入当前分组。
用户访问授权
> 公共访问和禁止访问的操作
> 正式版中为了方便大家不重复定义一些公共访问和禁止的操作,在配置中设置了ALLOW_VISIT 和DENY_VISIT2个数组配置,这样在其中的url就可以无需用户组授权禁止和公共访问了。