Laravel 4:独立的superadmin auth

时间:2014-05-16 14:20:06

标签: laravel laravel-4

我希望能够为管理员用户提供一个独立的登录机制,而不是普通用户。一般用户的身份验证是默认的Laravel方式。使用用户表和用户模型。

对于我们的内部管理部分(superadmin),我更喜欢使用基本的http身份验证,而不是使用users表但根本没有表或新的superadmins表只包含可以登录superadmin的用户。

最好的方法是什么?有没有办法硬编码一些superadmin登录凭据或者是否需要superadmins表?我在考虑编写一个自定义auth驱动程序,但是如何仅为superadmin部分加载自定义auth配置文件?优选地,自定义auth驱动程序将使用不同的cookie名称,因为我们的superadmin用户需要能够以用户身份登录,而无需经常重新登录superadmin。

1 个答案:

答案 0 :(得分:2)

  

自定义身份验证驱动程序最好使用不同的cookie名称,因为我们的superadmin用户需要能够以用户身份登录,而无需经常重新登录superadmin。

这没有意义。无论您如何设置Cookie,都无法同时以两个不同的用户身份登录。你需要一些方法在它们之间“切换”。

就我个人而言,我觉得你这太​​难了。只需在users表中有一个“超级用户”列。然后在您以正常方式登录后 - 您可以执行类似

的操作

Filters.php

Route::filter('auth.superuser', function()
{
    if ( ! (Auth::user()->isSuperUser())) return Redirect::to('/');
});

然后在你的路线文件中:

// Normal routes here
Route::get('/', ['uses' => 'FrontController@showHomePage']);

Route::group(['before' => 'auth.superuser'], function ()
{
     // Superuser routes here
}

编辑 - 如果你想允许他们在SuperUser和另一个用户之间“切换” - 那么就这样做:

function login()
{
      // login code here
      if Auth::user()->isSuperUser()
      {
          $cookie = Cookie::forever('superuser', 'really_long_secret_token');
          // Return with redirect AND cookie
      }
}

然后在你的仪表板中,或者在你的仪表板中 - 你可以这样做:

@if (Cookie::get('superuser') === 'really_long_secret_token')
        Show superuser switch option here
@endif

无论他们当前是否以超级用户身份登录,都可以使用 - 因为计算机上的cookie使他们能够在任何时候切换到超级用户