首先说统一登录不需要统一代码,有的人参照老葛 thinkindrupal里介绍的说要所有站点必须统一使用一套代码,这是不对的,老葛也没有这样说,只不过没有告诉大家这个问题。
要实现内置单点登录,注意以下几项:
1.首先如果不需要统一代码, 那么各站点还是正常安装,网站文件夹都是并列的。
2.几个站点的数据库名字:选一个作为主站,主站的数据库名字比如是test,那么其它子站的数据库必须以主站数据库名为前缀,如:test_a, test_b
3.设置几个站点的cookie_domain为同一个名字,如:test.com (在settings.php里设置)
4.在子站的settings.php中设置统一登录需要的相关数据表的前缀,如:
$databases = array ( 'default' => array ( 'default' => array ( 'database' => 'test_a', 'username' => 'root', 'password' => '', 'host' => 'localhost', 'port' => '', 'driver' => 'mysql', 'prefix' => array( 'default' => '', 'users' => 'test.', 'sessions' => 'test.', 'role' => 'test.', 'authmap' => 'test.', 'field_data_field_qq' => 'test.', 'field_revision_field_qq' => 'test.', 'cache_field' => 'test.', ), ), ), );
单纯实现统一登录只需要设置users, sessions两个表统一即可。
如果要同步用户扩展字段,注意除了要同步字段表,还要同步cache_field表,否则无法实时的看到修改后的同步结果。