2017-01-11 3 views
2

В моем routes.php я эти маршруты:Laravel сохранить предыдущий URL и перенаправление после входа

Route::group(["middleware" => "isValidAddress"], function() { 
Route::group(["middleware" => "isNotAuth"], function() { 

    // Password 
    Route::group(["prefix" => "password"], function() { 
     Route::get("/", "[email protected]"); 

     // Gestione Password 
     Route::match(["GET", "POST"], "password", "[email protected]"); 
     // Nuovo 
     Route::get("password/nuovo", "[email protected]"); 
     Route::post("password/nuovo", "[email protected]"); 
     // Modifica 
     Route::get("password/modifica/{idPWD}", ["as" => "getPassword", "uses" => "[email protected]"]); 
     Route::post("password/modifica/{idPWD}", "[email protected]"); 
     // Elimina 
     Route::post("password/elimina", "[email protected]"); 

     // Importazione password da Vtiger 
     Route::match(["GET", "POST"], "importazione", "[email protected]"); 

     // Genera una password random 
     Route::post("genera", "[email protected]"); 
     // Visualizza la password decriptata 
     Route::post("visualizza", "[email protected]"); 
    }); 

Промежуточный «isValidAddress» проверить, если IP клиента будет разрешать доступ, в то время как промежуточный isNotAuth перенаправления пользователя, если он не прошел проверку подлинности:

class isNotAuth { 

    /** 
    * Handle an incoming request. 
    * 
    * @param \Illuminate\Http\Request $request 
    * @param \Closure $next 
    * @return mixed 
    */ 
    public function handle($request, Closure $next) { 
     // Se non è loggato lo reinderizzo alla pagina di login 
     if (!$request->session()->get("operatore")) { 
      // Mi salvo in sessione la pagina in cui si stava tentando di accedere prima di effettuare la login 
      $request->session()->put("URL_PWD", $request->getUri()); 
      return redirect("login"); 
     } 

     return $next($request); 
    } 

} 

он также сохранить в сессии страницу, которую пользователь хотел посетить предыдущий, и после входа в систему, перенаправить его на этой странице:

LoginCont roller.php

// Se si stava tentando di accedere ad una pagina prima di effettuare la login, reinderizzo l'utente ad essa 
    if ($request->session()->has("URL_PWD")) { 
     return redirect($request->session()->pull("URL_PWD")); 
    } 

В местном коде этот код работает правильно, но на моем сервере Linux-сервера это не так.

Вход маршруты:

// Login 
Route::group(["middleware" => "isAuth"], function() { 
    Route::get("login", "[email protected]"); 
    Route::post("login", "[email protected]"); 
}); 

Мой сайт находится в HTTPS, это может вызвать некоторые проблемы с сессией?

+0

вы хотите перенаправить на предыдущую страницу назад, если auth не удалось? – craig

+0

Как насчет 'return redirect() -> back()'. Есть ли причина, по которой вы не используете это? – devk

+0

Потому что, если я использую его, функцию пост Логин, перенаправить меня обратно на маршрут получить логин и мой промежуточный слой «isAuth» проверить, если пользователь аутентификации, если да, то перенаправить его на главную страницу – Mintendo

ответ

1

Используйте функцию back(). Из documentation:

Иногда вы можете перенаправить пользователь на прежнее места, например, когда передаваемая форма является недействительной. Вы можете сделать это с помощью с помощью глобальной вспомогательной функции back. Так как эта функция использует сеанс, убедитесь, что путь вызова функции обратно использует Промежуточное программное обеспечение группы веб или имеет все сессии промежуточного слоя применяется:

Route::post('user/profile', function() { 
    // Validate the request... 

    return back()->withInput(); 
}); 
+0

Если я использовать назад(), его вернитесь к логину входа, где промежуточное ПО «isAuth» проверяет, аутентифицирован ли пользователь, если да, я перенаправляю его на главную страницу: «Route :: group ([« middleware »=>« isAuth »], function() { Route :: получить ("Вход", "LoginController @ getLogin"); Route :: пост ("Вход", "LoginController @ postLogin"); }); ' – Mintendo

Смежные вопросы