我希望能够为管理员用户提供一个独立的登录机制,而不是普通用户。一般用户的身份验证是默认的Laravel方式。使用用户表和用户模型。
对于我们的内部管理部分(superadmin),我更喜欢使用基本的http身份验证,而不是使用users表但根本没有表或新的superadmins表只包含可以登录superadmin的用户。
最好的方法是什么?有没有办法硬编码一些superadmin登录凭据或者是否需要superadmins表?我在考虑编写一个自定义auth驱动程序,但是如何仅为superadmin部分加载自定义auth配置文件?优选地,自定义auth驱动程序将使用不同的cookie名称,因为我们的superadmin用户需要能够以用户身份登录,而无需经常重新登录superadmin。
答案 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使他们能够在任何时候切换到超级用户