设为首页收藏本站

UNIX技术社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
热搜: console
查看: 2452|回复: 0

Drupal——权限管理

[复制链接]
发表于 2011-7-24 14:59:11 | 显示全部楼层 |阅读模式
Drupal的权限管理方法
1, 基本权限管理
尽管Drupal的权限管理机制是强大复杂的, 但其默认的基本权限管理却非常简单, 基于角色(role)和操作权限, 把操作赋予角色, 而把角色赋予用户, 这样用户就能使用相应的权限. 基本权限管理粒度较粗, 只能满足一般的安全需求.
2, 按内容类型鉴权
如果我们对管理对象有更精细的管理要求, 比如我想让A角色能访问page, B角色只能访问story, 咋办? 基本权限管理做不到了, 那我们就扩展模块. 内容访问模块(Content Access )允许你对内容类型按角色设置权限(查看, 编辑, 删除). 其实Drupal6.2基本权限管理里也能设置按内容类型进行鉴权, 因为drupal把所有节点类型的几个基本操作都注册了, 看下面这个丑陋的循环, 呵呵, 这几个也是汉化不到位的地方.
<?php
function node_perm() {
$perms = array(‘administer content types’, ‘administer nodes’, ‘access content’, ‘view revisions’, ‘revert revisions’, ‘delete revisions’);

foreach (
return
node_get_types() as $type) {
    if ($type->module == ‘node’) {
      $name = check_plain($type->type);
      $perms[] = ‘create ‘. $name .‘ content’;
      $perms[] = ‘delete own ‘. $name .‘ content’;
      $perms[] = ‘delete any ‘. $name .‘ content’;
      $perms[] = ‘edit own ‘. $name .‘ content’;
      $perms[] = ‘edit any ‘. $name .‘ content’;
    }
}$perms;
}
?>

3, 按组鉴权
如果是个大公司, 有很多部门, 相互间都有安全需求, 比如:
1. 能按不同的部门创建不同的组, 它们都能管理其私有内容
2. 组成员拥有组内的权限
3. 跨组间允许指定某些特定的权限共享
4. 匿名用户只能访问标识为”public”的内容, 注册用户能访问public和Restricted, 仅组成员能访问private等
看到这么多需求, 则我们需要一个更复杂的权限管理, drupal目前有两个扩展模块都能提供类似的功能:
(a) taxonomy_access modules
使用drupal的分类模块的基本功能, 完成以上的权限控制, 这里有英文的教程, 步骤描述较清楚.
i, 定义一个词汇表(Groups), 用来定义组(即公司部门); 把它应用到所有内容类型, 再添加2个条目(比如财务, 研发)
ii, 再定义一个词汇表(Access), 用来定义访问级别; 同样应用到所有内容类型, 同时还要设置”必须”的选项, 这样保证创建内容时必须选一个该
词汇表中的条目. 加三个条目(public, Restricted, Private)
iii, 按基本权限管理的方法创建2个角色(财务人员, 开发人员), 再创建几个用户, 并分辨赋予对应角色(张三->财务, 李四->开发)
iv, 前面都是基本管理,没涉及到扩展模块, 现在打开”administer > user management > taxonomy access: permissions”, 按照步骤开始设吧, 一个组鉴权系统完成, 祝你好运.
(b) 著名的OG
Organic Groups功能太强了, 上面的需求全部能满足, 组或圈的概念是大型社区不可缺少的, 别犹豫了, 能用就用吧.
总之, drupal的权限管理机制非常灵活, 可简可繁, 每个系统都安全的需求都是不一样的, 你们的权限管理有哪些特殊的好实现, 拿出来show绣把.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表