Using Drupal 7 User Information as Authentication in Laravel


Using Drupal 7 User Information as Authentication in Laravel 4

我有一个Drupal 7网站,它是公司的内部网。我还有一个在Drupal之外运行的相关表单系统。我计划在Laravel 4下重新设计这个表单系统(使用Doctrine 2作为我的ORM,而不是Eloquent)。

当用户登录Drupal7时,他/她也应该能够弹出到Laravel系统,并可以即时访问外部表单。所以问题是:我如何让Laravel获取Drupal 7用户的凭据(会话ID和会话哈希),并将其用作该系统中的身份验证这可能吗?很明显,一旦用户注销,Laravel就需要知道这一点,并将用户重定向回Drupal登录。

在Laravel的app/config/database.php文件中建立与Drupal 7数据库的连接:

'drupal' => array(
    'driver'    => 'mysql',
    'host'      => 'localhost',
    'database'  => 'dpl',
    'username'  => 'user',
    'password'  => 'pass$5',
    'charset'   => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'prefix'    => '',
),

然后在一个函数中(在本例中,我创建了一个名为DrupalAuthorization的类),使用Laravel的DB facade来调用新创建的连接,如下所示:

$users = DB::connection('drupal');

最后,只需使用Laravel select方法运行一个查询,收集Drupal用户的会话信息:

$users = DB::connection('drupal')->select("SELECT uid, sid FROM d7_sessions WHERE hostname = ? AND uid > ? ORDER BY uid DESC", array($_SERVER["REMOTE_ADDR"], 0));