首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >laravel中的多用户身份验证不能正常工作

laravel中的多用户身份验证不能正常工作
EN

Stack Overflow用户
提问于 2018-02-14 10:24:57
回答 1查看 510关注 0票数 0

我是创建到用户登录和管理登录。用户登录为使用默认的laravel身份验证和管理,为我的创建警卫。它的工作原理很完美。没有任何问题来运行我的代码,只有一个问题,当我作为一个用户登录和登录后的管理,然后也显示用户是登录。

congig\auth.php

代码语言:javascript
运行
复制
return [

'defaults' => [
    'guard' => 'web',
    'passwords' => 'users',
],

'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'users',
    ],

    'api' => [
        'driver' => 'token',
        'provider' => 'users',
    ],

    'admin' => [
        'driver' => 'session',
        'provider' => 'admins',
    ],

    'admin-api' => [
        'driver' => 'token',
        'provider' => 'admins',
    ],
],

'providers' => [
    'users' => [
        'driver' => 'eloquent',
        'model' => App\User::class,
    ],

    'admins' => [
        'driver' => 'eloquent',
        'model' => App\Admin::class,
    ],

    // 'users' => [
    //     'driver' => 'database',
    //     'table' => 'users',
    // ],
],

'passwords' => [
    'users' => [
        'provider' => 'users',
        'table' => 'password_resets',
        'expire' => 60,
    ],
    'admins' => [
        'provider' => 'admins',
        'table' => 'password_resets',
        'expire' => 15,
    ],
],

];

App\Exception\Handler.php

代码语言:javascript
运行
复制
protected function unauthenticated($request, AuthenticationException 
$exception)
{
    if ($request->expectsJson()) {
        return response()->json(['error' => 'Unauthenticated.'], 401);
    }

    $guard=array_get($exception->guards(), 0);

    switch ($guard) {
        case 'admin':
            $login='admin.login';
            break;

        default:
            $login='login'; 
            break;
    }
    return redirect()->guest(route($login));
 }

路由器

代码语言:javascript
运行
复制
Auth::routes();
Route::get('/home', 'HomeController@index')->name('home');

Route::prefix('admin')->group(function(){

Route::get('/login','Auth\AdminLoginController@showLoginForm')-
name('admin.login');
Route::post('/login','Auth\AdminLoginController@login')-
name('admin.login.submit');
Route::get('/', 'AdminController@index')->name('admin.dashboard');
});
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-14 10:28:05

首先,很明显,您使用多个守卫来验证不同类型的用户,所以当您通过标准的auth保护来验证一个Simple用户时,当您想访问通过管理员保护(也就是Admin用户)认证的用户可用的路由时,您需要首先验证自己,所以Laravel multiguard authentication没有问题,您只是错误地实现了它,我建议您阅读更多关于警卫的内容,以及当您通过某些保护来访问用户时,然后尝试访问需要不同保护的路由。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48784826

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档