您的位置:首页 > 其它

joomla用户权限分析-用户注册过程 【转】

2010-02-10 11:55 232 查看
我们来仔细看整个注册过程,实际上最为重要是com_users/models/user.php中的store()函数,在这个函数中主要是调用了JTableUser的store函数,

if (!$user->save()) {
 $this->setError( $user->getError() );
 return false;
}


以及在session表中保存了session数据。

$table = $this->getTable('session', 'JTable');
$table->load($session->getId());
$table->username = $user->get('username');
$table->store();






再跟踪下去看看JTableUser类store函数,对一次注册过程来说:

// new record
$ret = $this->_db->insertObject( $this->_tbl, $this, $this->_tbl_key );
// syncronise ACL
$acl->add_object( $section_value, $this->name, $this->$k, null, null, 'ARO' );
$acl->add_group_object( $this->gid, $section_value, $this->$k, 'ARO' );




第一句程序显示是在jos_users中增加了一个用户
第二句程序是在jos_core_acl_aro增加了记录
第三句程序是jos_core_acl_groups_aro_map增加了记录

最终实际上一个用户登录过程涉及到增加记录的表共计四个,jos_users,jos_core_acl_aro,jos_core_acl_groups_aro_map,jos_sessions。

也就是说,如果要手工添加一个用户,要在这个四张表中增加相应的记录才能够完成整个动作。







手动添加用户

jos_users 手动插入

然后



insert into vps_core_acl_aro (section_value,value,order_value,name,hidden)
(select 'users',u.id,0,u.username,0 from vps_users u where u.id=‘刚插入user表自增Id’)
insert into vps_core_acl_groups_aro_map (group_id,aro_id)
(select 18,u.id from vps_core_acl_aro u where u.id=‘刚插入#_core_acl_aro自增Id’)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: