For English Users, please visit project page directly at: https://github.com/daxingplay/dokuwiki_ucenter
写这个验证程序的原因
Dokuwiki确实是个很棒的百科程序,它本身不依赖数据库,小巧、灵活,上手很快,而且插件什么的都很多。顺便吐槽一下,相比国内的互动百科,我觉得Dokuwiki的页面管理方式才真的是wiki的管理方式,互动百科那种,感觉更像是资讯类的,看看页面的链接就知道了。
不用说,Discuz是国内最知名的论坛建站软件了,我的橘汁仙剑网就是采用了Discuz + Dokuwiki这样一个组合。当然,Discuz本身是基于Ucenter验证用户的,而Dokuwiki是自带的一套验证机制(默认是文本方式存储在一个文件当中),这样,一个网站就有两个用户注册和登录接口了,如果两个程序的用户都很多,那必将是个很大的问题,所以Discuz的Ucenter正是这么一个解决方案,所有的PHP程序(当然其他语言应该也可以)都可以使用Ucenter来实现用户注册、登录等,这样,一个网站,无论使用了多少个PHP程序,都可以通过Ucenter来同步登录和退出,对用户而言,在这个网站上,只要有一个账户就可以了,当然用户体验会好很多。
所以,我觉得Dokuwiki有必要有个Ucenter的验证方式,在网上搜了一下,没有现成的,于是终于想自己写一个了。
具体介绍
Ucenter Authentication for Dokuwiki是将Dokuwiki和Ucenter整合的一套程序,项目目前托管在github上,地址是:https://github.com/daxingplay/dokuwiki_ucenter
兼容性
只适用于2012-10-13 “Adora Belle”以及以前的版本。对于之后版本的DokuWiki,请使用https://github.com/daxingplay/dokuwiki-plugin-authucenter
特点
- 基于Ucenter进行用户注册、登录、退出
- 支持同步登录、退出
- 绿色,不修改任何原版程序文件
使用方法
- 先到https://github.com/daxingplay/dokuwiki_ucenter/downloads下载源码包。
- 下载好源码后,将所有文件放置在Dokuwiki的根目录下。
- 将conf/uc.conf.php.dist复制一份为conf/uc.conf.php(当然你也可以直接重命名)
- 进入Ucenter后台,点击应用管理,添加新应用,如下图1所示
- 选择自定义安装,应用类型选择“其它”,应用名称、应用URL根据自己需要填写,然后写一个稍微复杂点的通信密钥,是否开启同步登录,是否接受通知可以根据自己的需要进行选择,如下图2所示
- 点击提交之后,下面会出现“应用的Ucenter配置信息”,复制里面的所有内容,如下图3所示
- 编辑conf/uc.conf.php这个文件,把前面的define部分替换为刚才复制的内容
- 进入Dokuwiki的管理后台,进入配置设置,将authtype(认证后台管理方式)设置为uc,superuser(超级用户)设置为Discuz或者Ucenter的超级管理员的用户名,然后点提交即可,如下图4所示
- 至此,已经安装完毕,进入Ucenter后台看看是否通信成功
用户组使用指南
2.0Beta开始,已经慢慢开始支持用户组管理功能了。2.0Beta中只支持discuz 2.5的用户组验证,因为时间关系,其他版本的discuz还未测试,但是dz7这样的版本肯定是不行的。配置方法也很简单:
- 编辑uc.conf.php
- 配置用户组类型:$conf[‘auth’][‘uc’][‘group_type’] = ‘discuz’;
- 配置discuz根目录所在位置:$conf[‘auth’][‘uc’][‘discuz_root’] = ‘../’;这里的位置是指相对于dokuwiki根目录的位置。
- 根据自己的需要在Dokuwiki的ACL中设置相应用户组权限吧。
如果不想启用用户组功能,将group_type设置为空即可。这样,所有非管理员用户默认为普通用户组user
Todo List
- 目前只实现了用户的注册和登录验证,没有实现用户组功能,如果实现用户组,可能需要创建数据库了,暂时,你可以通过Dokuwiki自带的ACL功能进行用户的授权,比较适合那些只有少数人编辑的wiki或者完全开放的wiki
- 目前在Dokuwiki端的用户管理功能还有些bug,稍候会慢慢修复,既然都是用Ucenter了,那干脆到Ucenter里面管理用户吧!:)
- 将语言包独立出来,这样方便在多语言环境下使用
结束语
好了,介绍就到此啦,如果发现bug或者有任何问题,请提交issues