Auth::guard('memberweb')-›user() возвращает null после перенаправления

Я использую пакеты laravel-modules "https://nwidart.com/laravel-modules/v3/introduction", чтобы лучше структурировать мое приложение.

У меня есть пользовательская модель, созданная с помощью ремесленной команды «make::auth», которая находится в приложении, и модель-член, которая находится в папке «Модули». введите здесь описание изображения

Проблема в том, что после того, как я вхожу в систему с помощью Member Guard и перенаправляюсь на /member/profile Auth::guard('memberweb')->user() всегда возвращает null. Но если я dd(Auth::guard('memberweb')->user()) в методе входа в MemberLoginController :

/**
 * Member Login
 *
 * @return void
 */
public function login(Request $request)
{
      $this->validate($request, [
          'email' => 'required|email',
          'password' => 'required',
      ]);

    // Attempt to log the member in
      if (Auth::guard('memberweb')->attempt(['email' => $request->email, 'password' => $request->password], $request->remember)) {
        // if successful, then redirect to their intended location
        dd(Auth::guard('memberweb')->user());
        return redirect()->intended(route('memberProfile'));
      }
      // if unsuccessful, then redirect back to the login with the form data
      return redirect()->back()->withInput($request->only('email', 'remember'))->with('error','your credentials donnot match our records');
}

объект возвращается, как и ожидалось. Похоже, что после перенаправления участник выходит из системы.

А мой config.auth.guards выглядит так:

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

    'api' => [
        'driver' => 'token',
        'provider' => 'users',
    ],
    'memberweb-api' => [
        'driver' => 'token',
        'provider' => 'members',
    ],
],

И мой Kernel.php:

protected $routeMiddleware = [
    'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
    'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
    'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
    'can' => \Illuminate\Auth\Middleware\Authorize::class,
    'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
    'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
    'memberAuth' => \Modules\Member\Http\Middleware\RedirectIfMemberAuthenticated::class,
    'role' => \App\Http\Middleware\Roles::class,
    'permission' => \App\Http\Middleware\Permissions::class,
];

Что я делаю не так?


person Marco    schedule 13.05.2018    source источник
comment
столкнулся с такой же проблемой, вы нашли решение?   -  person nasirkhan    schedule 21.06.2018


Ответы (1)


Проблема была в файле route.php. Вам также необходимо добавить веб-защиту перед авторизацией.

так, например, мой route.php выглядел так:

<?php

Route::group(['middleware' => ['auth','role:developer|admin']], 
function()
{
Route::get('/dashboard/users', 'Modules\User\Http\Controllers\UserController@index')->name('dashboardUsers');
Route::get('/dashboard/user/{id}/edit', 'Modules\User\Http\Controllers\UserController@edit')->name('dashboardEditUserView');
Route::post('/dashboard/user/{id}/edit', 'Modules\User\Http\Controllers\UserController@update')->name('dashboardEditUserView');
});

но должно выглядеть так:

<?php

Route::group(['middleware' => ['web','auth','role:developer|admin']], 
function()
{
Route::get('/dashboard/users', 'Modules\User\Http\Controllers\UserController@index')->name('dashboardUsers');
Route::get('/dashboard/user/{id}/edit', 'Modules\User\Http\Controllers\UserController@edit')->name('dashboardEditUserView');
Route::post('/dashboard/user/{id}/edit', 'Modules\User\Http\Controllers\UserController@update')->name('dashboardEditUserView');
});
person Marco    schedule 23.06.2018