或许你的数据没有发布,你只想部分人员访问你的Gbrowse,这就涉及到了权限管理,GBrowse提供了多种机制,你可以限制访问者的主机、IP地址、域名,或者只有通过用户名密码登陆后才可以访问。
Gbrowse 2.20以上的版本提供了以下三种权限管理的方式:
- 通过Apache提供的权限管理机制
- 构建自己的用户账户数据库
- 通过插件机制
Gbrowse是以Apache作为默认的服务器,Apache的权限机制自然适用于对其进行管理,Apache的权限管理是基于目录的,提供的多种权限验证机制,包括IP地址、主机名、域名以及用户账户等,通过配置实现,不清楚的读者可以通过Google进一步了解,其缺点就是维护访问账户的经常与服务器配置打交道,另外只能控制到目录层次,对于用户多、权限细化的需求就无法实现。
权限管理最为流行的方式就是用户注册,然后登陆,这里主要介绍,如何通过Gbrowse自身的用户系统实现对权限的访问。
要求
- perl的DBI模块或者DBD::mysql,DBD::SQLite
- 允许用户注册,需要安装perl的Net::SMTP模块,以及提供SMTP发邮件的服务器
- 如果允许用户使用OpenIDs登录,需要安装perl的Net::OpenID::Consumer
配置GBrowse.conf
[GENERAL] # ...lots of stuff... # Login Settings user_accounts = 1 user_accounts_registration = 1 user_accounts_openid = 1 user_account_db = DBI:SQLite:/var/www/gbrowse2/databases/users.sqlite smtp_gateway = localhost application_name = GBrowse application_name_long = The Generic Genome Browser email_address = noreply@gbrowse.com
user_account_db
使用mysql数据库
DBI:mysql:database=gbrowse_login;host=mysql.oicr.on.ca;user=gbrowse;password=gbrowse
使用SQLite数据库
DBI:SQLite:/var/www/gbrowse2/databases/users.sqlite
smtp_gateway
邮件服务器设置,和客户端发邮件是一个道理。语法如下:
<smtp.server.com>:<port>:<encryption>:<username>:<password>
Gmail邮件设置示例:
smtp_gateway = smtp.gmail.com:465:ssl:john.doe:open_sesame
数据库的创建
配置好以后,通过允许gbrowse_metadb_config.pl脚本,来创建数据库。包括user、openid_users、sessions、dbinfo四张表。
USERS
FIELD | TYPE | DESCRIPTION |
---|---|---|
userid | integer not null PRIMARY KEY auto_increment | A unique user ID. |
varchar(64) not null UNIQUE | An e-mail for confirmation & notification. | |
pass | varchar(32) not null | An encrypted password (not stored as plain text). |
remember | boolean not null | Whether to remember the user at this location or not. |
openid_only | boolean not null | Was registered with an OpenID or no? |
confirmed | boolean not null | Has been confirmed? |
cnfm_code | varchar(32) not null | Confirmation code. |
last_login | timestamp not null | Date & time of last login. |
created | datetime not null | Date & time created. |
OPENID USERS
FIELD | TYPE | DESCRIPTION |
---|---|---|
userid | integer not null | A unique user ID. |
openid_url | varchar(128) not null PRIMARY key | The URL of the openID. |
SESSIONS
FIELD | TYPE | DESCRIPTION |
---|---|---|
userid | integer not null PRIMARY KEY auto increment | A unique user ID. |
username | varchar(32) | A username, assigned on registration so the user can login. Anonymous users have “an anonymous user” as their username. |
sessionid | char(32) not null UNIQUE | The 32-bit hexadecimal ID corresponding to their session. |
uploadsid | char(32) not null UNIQUE | The 32-bit hexadecimal ID corresponding to their uploads folder. |
DBINFO
FIELD | TYPE | DESCRIPTION |
---|---|---|
schema_version | int(10) not null UNIQUE | The version number of the current schema. |
通过脚本添加用户
gbrowse_create_account.pl [-pass <password> -fullname <name> -email <email>] <username> gbrowse_change_passwd.pl <username> [<password>]
权限的配置
通过restrict标签来进行设置。
限制对于数据源的访问
[GENERAL] # lots of other stuff... restrict = require valid-user ...
限制对某个Track的访问
[5_prime_RACE] glyph = generic feature = RACE:5_prime restrict = require user fred joseph andrea marta
只有用户名为fred joseph andrea marta的可以访问。
Gbrowse 2.20及以上版本,还另外一种机制就是通过插件实现,调用Linux系统用户对于权限进行管理的,这里不做详述(还没有认真去看)。
参考
本文来源:http://boyun.sh.cn/bio/?p=1870