美国虚拟主机Hostease

Mediawiki中文技术论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9299|回复: 1

mediawiki实现访问控制

[复制链接]
发表于 2011-12-22 11:38:25 | 显示全部楼层 |阅读模式
RAKsmart美国服务器
mediawiki实现访问控制
   mediawiki采用扩展插件accesscontrol后,可以实现一定的访问控制。原accesscontrol-0.8版本可以实现:按用户组进行控制写权限控制。采用此插件的好处是:可以由wiki用户自己定义自己的网页的编辑权限,而无须管理员来定义,管理方便、维护简单。
  但我发现此插件只实现了编辑权限的控制,没有对读权限进行控制,不太符合公司内部的要求。于是我在此基础上做了一些小的改动扩展,使得他能支持读权限控制。改动后的源代码:http://www.scmbbs.com/download/accesscontrol-0.8.rar  (其中我只改动了accesscontrol.php文件)

  注:accesscontrol-1.0版本看起来更为灵活,但我没用成功,所以还是用了0.8版本。
原插件位置:http://www.mediawiki.org/wiki/Extension:AccessControl (1.0版本)
http://www.mediawiki.org/wiki/Ex ... ased_Access_Control (0.8版本)
配置方法参阅其原著。
  我扩展后的用法:
目前访问控制可以实现:特定人可编辑、特定人可读(ro)、其他人只读/其他人不能读 三种权限控制。

如果您希望某一页面只有本组team1成员可以编辑,某组人team2只读,其他人不能读,则遵循如下3个步骤:

1、假设您的组名字叫team1,则创建一个wiki页面为:Usergroup:team1 (可通过在地址栏index.php/后面直接写Usergroup:team1来创建),Usergroup为关键字。
在此页面中列出团队成员用户名(邮箱前半部分,即域用户名)

*all()
*xuejiang.li
*janny.bai
*wb_temp

注意:每个用户用*号隔开。其中all()的意思是其他所有人不可读。如果不加上all(),则其他所有人只读。

2、同样创建一个wiki页面为:Usergroup:team2,在此页面中列出允许只读访问的用户名

*shanshan
*xiaobai
*laoda

3、在需要权限控制的wiki页面头部增加如下代码:
<accesscontrol>team1,,team2(ro)</accesscontrol>
此代码用标签对<accesscontrol>来告诉wiki,此页面受保护,只有team1可以编辑,team2只读。team2后面加(ro)的意思是标明team2权限为read only。需要注意到:当定义2个如上Usergroup时,用两个逗号(,,)来分隔。如果要更改team2为可写,则将team2后面的(ro)去掉,写成<accesscontrol>team1,,team2</accesscontrol>。 保存页面,此时页面头部会提示此页面正受到保护。

特别说明:
原插件由于只控制编辑权限,因此他只在用户点击编辑时才触发程序进行判断,而我改动后是用户读取时就在做判断,因此改动后的性能会稍微有所下降(理论上,虽然我没感觉出来).
回复

使用道具 举报

发表于 2012-8-22 16:11:38 | 显示全部楼层
美国主机侦探
您好 按照您给的方法我部署没有成功,我的错误是 一担在页面中加入<accesscontrol>**</accesscontrol>我创建的所有用户均无法访问此页面。。特此向您请教,忘您指点
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

BlueHost美国主机优惠码

手机版|小黑屋|Archiver|Mediawiki中文技术论坛  

GMT+8, 2019-1-17 05:18 , Processed in 0.057081 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2019 Comsenz Inc.

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