Laravel双重身份验证类型


Laravel dual authentication types

我正在使用Laravel 4开发一个应用程序,其中我需要有2种身份验证类型。

类型1:用户-是系统的管理员/后台工作人员。

类型2:客户-即网站的访问者,如果他们经过身份验证,他们可以做某些事情(如购买服务)。

Type 1用户使用用户名/密码进行身份验证,因此这非常适合Laravel身份验证模型。

类型2客户将使用OAuth风格(使用Google/Facebook)或手动身份验证(如果客户愿意)进行身份验证。我不想把两者混合在一起,所以如果你作为客户进行身份验证,我不希望身份验证过滤器认为你可以访问管理页面,反之亦然。

这两种类型将有自己的表(分别为Users和Customers)。有没有办法让不同的Auth模型以某种方式同时运行?还是我必须为客户写自己的东西?在这种情况下,建议采用什么方法?

如果我正确理解你的问题,这应该会让你走上正确的道路。

您可以简单地在每个表中设置一个account_level指示符,并将您的管理路由封装在一个过滤器中,该过滤器检查用户的account_level是否正确。例如:

在routes.php 中

Route::group(array('before' => 'admin_only'), function() {
    Route::get('my-admin-route', 'AdminController@adminAction');
});

在过滤器中.pp

Route::filter('admin_only', function() {
    if (!Auth::check() || Auth::user()->account_level !== Config::get('constants.ADMIN_ACCOUNT_LEVEL') {
        return App::abort(404);
    }
});

为了让系统中没有用户名和密码的用户登录,您需要单独处理OAuth连接,一旦您有了有效的用户,您就可以使用Auth::login($user)方法让用户回到您通常的应用程序流中。

http://laravel.com/docs/4.2/security#manually