我们必须有一个通过 Web 服务可用的“注册”方法,该方法是用 java 编写的,因此从今往后我们无法访问 Drupal API。但我们需要能够成功注册用户。简单地将用户添加到用户表中是不行的,因为新创建的用户永远无法成功登录。我再次喜欢 Drupal API,并且总是使用它,因为这是“正确”的方法,但在这种情况下,我们只是没有能力这样做。对这个困境有什么见解吗?
最佳答案
您需要单步执行 user_save()
API 函数可帮助您了解 Drupal 在创建新用户时执行的操作。
Drupal 在保存此类数据方面并没有什么深奥的魔力:它都在数据库中。因此,虽然不能使用 Drupal API 并不理想,但您实际上只处理两个数据库插入:{user}
表插入(您已经完成了)和{users_roles}
表插入。
根据您的信息,我怀疑缺少的链接是您没有向新用户 UID 的 {users_roles}
表中添加行。 user_save()
中的相关行:
db_query('INSERT INTO {users_roles} (uid, rid) VALUES (%d, %d)', $account->uid, $rid);
其中,$account->uid
是新创建用户的 UID,$rid
是您要授予用户的角色 ID。新用户至少需要经过身份验证的用户
角色。
user_save()
中的其他内容主要是健全性检查(user_save()
除了创建新用户之外还处理更新用户)和钩子(Hook)触发,您可能会这样做无需担心此用例。
关于drupal - 如何在不使用 API 的情况下向 Drupal 6.x 注册用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3509342/