Laravel双重身份验证类型

时间:2014-10-22 23:38:54

标签: php authentication laravel

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

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

类型2:客户 - 如果经过身份验证,则可以执行某些操作(如购买服务)的网站访问者。

使用用户名/密码对Type 1用户进行身份验证,以便在Laravel身份验证模型中很好地适应。

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

这两种类型将拥有自己的表(分别是用户和客户)。有没有办法以某种方式同时运行不同的Auth模型?或者我必须为客户写自己的东西?这种情况下推荐的方法是什么?

1 个答案:

答案 0 :(得分:0)

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

您只需在每个表中设置一个account_level指示符,并将管理路由包装在一个过滤器中,该过滤器会检查用户的account_level是否正确。例如:

在routes.php中

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

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