Laravel 4:独立超级管理员身份验证

Laravel 4:独立超级管理员身份验证,laravel,laravel-4,Laravel,Laravel 4,我想能够有一个单独的登录机制,管理员用户比我们的普通用户。普通用户的身份验证是默认的Laravel方式。使用用户表和用户模型 对于我们的内部管理部分(superadmin),我更喜欢使用基本的http身份验证,不使用users表,而完全不使用表,或者使用一个新的superadmins表,其中只包含可以登录superadmin的用户 最好的方法是什么?是否有某种方法可以硬编码一些superadmin登录凭据,或者是否需要superadmins表?我正在考虑编写一个自定义身份验证驱动程序,但是如何仅

我想能够有一个单独的登录机制,管理员用户比我们的普通用户。普通用户的身份验证是默认的Laravel方式。使用用户表和用户模型

对于我们的内部管理部分(superadmin),我更喜欢使用基本的http身份验证,不使用users表,而完全不使用表,或者使用一个新的superadmins表,其中只包含可以登录superadmin的用户

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

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

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

就我个人而言,我认为你太难了。只要在用户表中有一列“超级用户”。然后,在您以正常方式登录之后,您可以执行以下操作

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
}
编辑-如果您希望允许他们在超级用户和另一个用户之间“切换”,请执行以下操作:

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使他们能够在任何时候切换到超级用户

也许您可以使用
/admin
admin.
作为URL,将所有这些都放入不同超级管理员控制器的路由组中,然后使用
.htaccess
使用
.htpasswd
文件进行保护?为什么不在用户表“超级用户”上设置一列?那就用正常的方式进行身份验证?似乎有很多头痛/工作没有多大收获。你的答案似乎可以接受,似乎是一个很好的解决方案。但仍然是一个问题。为什么不可能有两个不同的身份验证cookie?superadmin的一个主要用途是,superadmins将具有一个使用
Auth::loginUsingId()
以xxx身份登录的功能,如果我没有弄错的话,它将为该用户设置Auth cookie,覆盖superadmin用户。这就是我想将这两类用户分开的主要原因。但是拉雷维尔如何知道在任何给定的时间点你“想要”成为哪一类用户?你需要在他们之间“切换”。因此,拥有两个cookie并不能让你同时成为两个人——你必须是其中一个。这确实是个问题,让laravel为superadmin控制器加载不同的身份验证提供程序。这就是为什么我想创建一个自定义身份验证提供程序,基本上与普通身份验证提供程序相同,但使用superadmins表(或硬编码数组)并设置不同的cookie。如果以xxx身份登录不是必需的功能,我当然会选择您建议的解决方案。但我敢肯定,如果他们继续不得不重新登录超级管理员,他们会抱怨的。该开关仅在以超级管理员身份登录时工作。一旦作为普通用户登录,我就不能显示开关了。谢谢!我要做的是将cookie检查放入
Auth::user()->issupurer()
函数中。通过这种方式,超级管理员将能够访问超级管理员页面,无论他们当前是否以普通用户身份登录。