Laravel Функция выхода из системы не работает в пользовательской аутентификации - PullRequest
0 голосов
/ 22 апреля 2020

В моем проекте Laravel я использую мульти аутентификацию. Но из моего недавно созданного пользователя agency, функция выхода из системы не работает

Ниже приведен мой код для выхода из системы

 <li>
                                 <a href="{{ url('/agency/logout') }}"
                                    onclick="event.preventDefault();
                                    document.getElementById('logout-form').submit();">
                                 Logout
                                 </a>
                                 <form id="logout-form" action="{{ url('/agency/logout') }}" method="POST" style="display: none;">
                                    {{ csrf_field() }}
                                 </form>
                              </li>

Ниже приведен код в маршрутах (web. php)

Route::group(['prefix' => 'agency'], function () {
    Route::get('/', 'Agency\AgencyAuth\LoginController@showLoginForm')->name('agency_login');
    Route::get('/login', 'Agency\AgencyAuth\LoginController@showLoginForm')->name('login');
    Route::post('/login', 'Agency\AgencyAuth\LoginController@login');
    Route::post('/logout', 'Agency\AgencyAuth\LoginController@logout')->name('logout');

   // Route::get('/agencie_home', 'Agency\HomeController@index')->name('agencie_home');
});

Ниже приведен код в LoginController. php

<?php

namespace App\Http\Controllers\Agency\AgencyAuth;

use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Support\Facades\Auth;
use Hesto\MultiAuth\Traits\LogsoutGuard;
use JsValidator;

class LoginController extends Controller
{
    /*
    |--------------------------------------------------------------------------
    | Login Controller
    |--------------------------------------------------------------------------
    |
    | This controller handles authenticating users for the application and
    | redirecting them to your home screen. The controller uses a trait
    | to conveniently provide its functionality to your applications.
    |
    */

    use AuthenticatesUsers, LogsoutGuard {
        LogsoutGuard::logout insteadof AuthenticatesUsers;
    }

    protected $validationRules = [
                                        'email' => 'required|email',
                                        'password' => 'required'
                                    ];

    /**
     * Where to redirect users after login / registration.
     *
     * @var string
     */
    public $redirectTo = '/agency/dashboard';

    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('agencie.guest', ['except' => 'logout']);
    }

    /**
     * Show the application's login form.
     *
     * @return \Illuminate\Http\Response
     */
    public function showLoginForm()
    {
        $validator = JsValidator::make($this->validationRules,[],[],'#loginform');
        return view('agency.auth.login')->with('validator', $validator);
    }

    /**
     * Get the guard to be used during authentication.
     *
     * @return \Illuminate\Contracts\Auth\StatefulGuard
     */
    protected function guard()
    {
        return Auth::guard('agencie');
    }

    public function logout(Request $request) {
        Auth::logout();
       return '/agency';
    }
}

Когда я пытаюсь выйти из системы, возвращается следующая ошибка

Class App\Http\Controllers\Agency\AgencyAuth\Request does not exist

Как реализовать функцию выхода из системы?

1 Ответ

0 голосов
/ 22 апреля 2020

Вы не используете требуемое пространство имен, попробуйте использовать следующее в вашем LoginController:

use Illuminate\Http\Request;

Вы получаете ошибку из-за того, что ваш скрипт пытается загрузить класс Request из текущего пространство имен:

App\Http\Controllers\Agency\AgencyAuth;
...