laravel - как выйти из сеанса после проверки помните меня на таможенной страже? - PullRequest
0 голосов
/ 30 октября 2018

Я создал собственный сторож в laravel. Проблема, с которой я сталкиваюсь, заключается в том, что когда я проверяю функцию Запомнить меня на странице входа, я могу войти в систему, но когда я хочу выйти, я не могу завершить сеанс. , Я знаю, что проблема в функциональности выхода из системы, но не знаю, как ее решить. Я попытался скопировать функцию выхода из системы в authenticatesuser.php, но все еще не смог завершить сеанс и выйти из системы.

LoginController

<?php

namespace App\Http\Controllers\CustomerAuth;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Auth;

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;

    /**
     * Where to redirect users after login.
     *
     * @var string
     */
    protected $redirectTo = '/';

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

    protected function guard()
    {
        return Auth()->guard('customer');
    }

    public function logoutcustomer()
    {
    $customer =  Auth::guard($customer)->logout();
        $customer->session()->invalidate();
        return redirect('/');
    }



    public function showLoginForm()
    {
        if (Auth::user() || Auth::guard('customer')->user()) {
            return redirect('/');
        } else {
            return view('customer-auth.login');
        }
    }
}

AuthenticatesUser.php

public function logout(Request $request)
{
    $this->guard()->logout();

    $request->session()->invalidate();

    return redirect('/');
}

//navbar customer

<a class="dropdown-item" href="{{ route('customer.logout') }}" onclick="event.preventDefault();
                                                 document.getElementById('logout-form').submit();">
                                    {{ __('Logout') }}
                                </a>
                        <form id="logout-form" action="{{ route('customer.logout') }}" method="POST" style="display: none;">
                            @csrf
                        </form>

веб-маршрут

Route::group(['prefix'=> 'customer'], function () {
// Login Routes...
    // Route::get('login', ['as' => 'customer.login', 'uses' => 'CustomerAuth\LoginController@showLoginForm']);

    Route::post('login', [ 'uses' => 'CustomerAuth\LoginController@login'])->name('customer.login');
    // Route::post('logout', ['as' => 'customer.logout', 'uses' => 'CustomerAuth\LoginController@logoutcustomer']);
    Route::post('logout', 'CustomerAuth\LoginController@logoutcustomer')->name('customer.logout');

}

Ответы [ 2 ]

0 голосов
/ 03 февраля 2019

Как новичок, я тоже столкнулся с той же проблемой. Я добавил эту функцию выхода вниз в файл LoginController.php. Добавление новой строки для каждого охранника решило мою проблему. Я уверен, что есть лучший способ объединить этих двух охранников, но это то, что я могу сделать.

public function logout(Request $request)
    {
        Auth::guard('customer')->logout();
        Auth::guard('web')->logout();
        $request->session()->flush();
        $request->session()->regenerate();
        return redirect('/');
    }
<li class="nav-item">
            <a
              class="nav-link logout"
              href="{{ route('logout') }}"
              onclick="event.preventDefault();
                       document.getElementById('logout-form').submit();">
                       <i class="fas fa-power-off"></i>
                       <p>{{ __('Logout') }}</p>
            </a>
            <form id="logout-form" action="{{ route('logout') }}" method="POST" style="display: none;">
                @csrf
            </form>
          </li>
0 голосов
/ 10 января 2019
    Try This:

   public function guard() {   
      return Auth::guard('customer');
    }

    public function logoutcustomer(){
       $this->guard()->logout();
       return redirect('/');
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...