2012-07-01 40 views
0

我是新的Drupal但我只是想破解/自定义Drupal 7的登录功能,如硬编码。正如我发现Drupal 7登录过程正在处理user.module及其相关文件。由Drupal 7处理的属性默认用户登录过程

我只想知道当通过提供用户名/密码完成用户日志/认证过程时返回或提供哪些类型的值或属性。

返回,提供返回的Drupal(沿整个认证过程)的最终性能,我只注意到到目前为止是:已尝试用户

    • {UID} {摆脱}用户的角色ID
    • 用户电子邮件
    • 用户被阻塞或不
    • 然后..?

    重点是..还有其他什么?
    我可以替换/修改整个现有的身份验证过程吗? (如我需要)

    例如,在user.module的缺省auth功能之一:

    function user_authenticate($name, $password) { 
        .. 
        return $uid; 
    } 
    

    例如,如果我修改(硬编码),其作用是连接到我的其他外部数据库(一个或多个)并返回{用户ID},Drupal将得到一个认证要求{uid}。那么还有什么其他的提供?用户角色和..等等等等?

    像那样..我还应该触摸哪些其他功能和属性,并在认证过程中提供回Drupal?

  • 回答

    1

    Drupal是一个可扩展的系统。不需要像“用户”模块那样在核心模块中进行“硬编码”。您应该研究允许扩展核心(也是贡献)模块的钩子系统。

    如果你想从不同的数据库中获取用户标识(我不清楚这个用例),你仍然可以使用Drupal数据库中的角色和其他用户数据。

    +0

    请你分享一些关于为用户登录做'hook'的事情吗? –

    2

    这不是一个实际的答案,但我不能发表此评论作为评论。

    基本上我们不会破解核心。所以看看user.module的代码而不是可以帮你学习钩子。举一个例子,通过查看hook_nodeapi()的代码,创建节点时如何添加一些魔力很困难。但是,如果您检查文档和返回/输入参数,则执行该任务会更容易。

    我想通过使用hook_form_alter()添加额外的提交处理程序来登录窗体。我已经看到了有关您的用例的其他一些线索,但不幸的是很难为您提供示例代码。您可以看到其他模块如何实现额外的身份验证(例如:)。 (查看记住我模块如何添加一个复选框登录窗体和twitter模块,允许twitter登录)。

    然后,你可以让Drupal正常认证用户,而你的新定制功能另外还有 Drupal的认证。

    Drupal甚至可以连接到外部数据库,无论它是否是Drupal。

    正如您在许多函数中看到的那样,它们返回一个布尔值或有时是用户标识。 user_load()是加载基本用户对象的函数。

    记住它是模块化的。一些模块可以使用hook_user_load()来包含/删除/更改这些值。用户条款模块和配置文件模块就是一个很好的例子。它包含其他模块需要用户信息时的配置文件字段信息。

    单个用户不仅仅是一组信息。它可以在过程的任何部分进行修改。所以那样做。使用您的模块提供您的外部网站所具有的信息。

    {uid} of the attempted user 
    {rid} role id of the user 
    user email 
    user is blocked or not 
    user last login time. 
    user register date. 
    ... 
    

    要查看整个对象网站,输入以下内容。

    <pre> 
    <?php 
    $user_account = user_load (1); 
    print_r($user_account); 
    ?> 
    </pre> 
    

    您可以在使用php过滤器的节点创建页面中输入此代码。

    没有硬编码,您可以允许其他模块使用这些值。即使您的源数据库没有角色ID,您也可以为他们提供角色ID,用户ID等。

    祝你好运!