как полностью выйти из системы в контроллере laravel 5.5? - PullRequest
0 голосов
/ 29 апреля 2018

После выхода из приложения laravel в браузере я нажимаю кнопку «назад» (назад) и затем вижу панель управления.

Я хочу исключить эту "сессию" с Мантейном, если я вернусь.

Кто-нибудь может мне помочь?

РЕДАКТИРОВАТЬ: у меня есть два файла входа в систему, один находится внутри контроллеров / Auth и другой находится внутри контроллера /. Я уверен, что это не очень хорошая практика, но она поддерживает мою систему и работает. как это решить?

Контроллеры / Auth / LoginController.php

<?php

namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;

use App\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Session;


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
     */

    private $user;

}

my Login Controllers / LoginController.php ->

<?php

namespace App\Http\Controllers;

use App\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Session;


class LoginController extends Controller
{
    private $user;


    public function logout(){
        Auth::logout();
        \Session::flash('success',"logout");
        return redirect()->route('login');
    }

}

мой DashboardController ->

use App\Authorization;
use App\BackLog;
use App\Key;
use App\isKeyInUse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Redirect;

class DashboardController extends Controller
{

    public function index() {

        return view('dashboard');
    }


}

my web.php ->

<?php

Route::get('/', 'LoginController@login')->name('login');
Route::get('auth/logout', 'Auth\LoginController@logout')->name('logout');

Route::get('/dashboard', 'DashboardController@index')->name('dashboard')->middleware('auth');
Route::post('/dashboard/getKey', 'DashboardController@getKey')->name('dashboard.key')->middleware('auth');

Ответы [ 4 ]

0 голосов
/ 29 апреля 2018

Это происходит из-за кеширования. чтобы предотвратить это, мы можем создать middleware, который перехватывает каждый запрос и устанавливает срок действия cache через 0, и, таким образом, он заставит страницу перезагрузиться, когда пользователь нажимает кнопку "Назад", вот шаги для создания промежуточного программного обеспечения:

первый * * 1 010 создайте промежуточное ПО, я назову его MyAuth: php artisan make:middleware MyAuth второй

зарегистрировать промежуточное ПО в app/Http/kernel.php

 protected $routeMiddleware = [
      ...,
      'my_auth' => \App\Http\Middleware\MyAuth::class,
   ];
* * Третья тысяча двадцать-один * * тысяча двадцать-два

во вновь созданном промежуточном программном обеспечении app/Http/Middleware/MyAuth.php

public function handle($request, Closure $next, $guard = null)
    {
         $response =  $next($request);   
         return $response
                ->withHeaders([
                    'Cache-Control' => 'no-store, no-cache, must-revalidate',
                    'Pragma'=> 'no-cache',
                    'Expires' => '0'
                ]);
        }
  }

Тогда

Вы можете добавить свое промежуточное ПО следующим образом:

Route::group(['middleware' => 'my_auth'], function() {

  // All your routes you want to be secure

});

Этот код был получен из этого видео

0 голосов
/ 29 апреля 2018

Вы отсутствуете Запрос в функции выхода из системы

    public function logout(Request $request){
        Auth::logout();
        \Session::flash('success',"logout");
        return redirect()->route('login');
    }

И напиши в свою панель управления контроллером

public function __construct() 
{
    $this->middleware('auth');
}
0 голосов
/ 29 апреля 2018

Нажатие кнопки «Назад» в вашем браузере загрузит ранее загруженный документ. Это просто видно, но не будет работать наверняка. Для этого вам просто нужно переопределить событие back press из javascript.

См. Ссылку Как обнаружить событие кнопки «Назад» в браузере - Кросс-браузер

0 голосов
/ 29 апреля 2018

Вставьте эти строки в контроллер Dashboard и затем проверьте:

public function __contruct() 
{
    $this->middleware('auth');
}

Это проверит, вошел ли пользователь в систему или нет? Если пользователь вышел из системы, он отправляется на определенную страницу входа, как вы определили в промежуточном программном обеспечении auth.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...