[英]Laravel save previous url and redirect after login
在我的 routes.php 我有這些路由:
Route::group(["middleware" => "isValidAddress"], function() {
Route::group(["middleware" => "isNotAuth"], function() {
// Password
Route::group(["prefix" => "password"], function () {
Route::get("/", "PasswordController@getIndice");
// Gestione Password
Route::match(["GET", "POST"], "password", "PasswordController@getPasswords");
// Nuovo
Route::get("password/nuovo", "PasswordController@getInsertPassword");
Route::post("password/nuovo", "PasswordController@postInsertPassword");
// Modifica
Route::get("password/modifica/{idPWD}", ["as" => "getPassword", "uses" => "PasswordController@getUpdatePassword"]);
Route::post("password/modifica/{idPWD}", "PasswordController@postUpdatePassword");
// Elimina
Route::post("password/elimina", "PasswordController@deletePassword");
// Importazione password da Vtiger
Route::match(["GET", "POST"], "importazione", "PasswordController@importazionePassword");
// Genera una password random
Route::post("genera", "PasswordController@generaPassword");
// Visualizza la password decriptata
Route::post("visualizza", "PasswordController@visualizzaPassword");
});
中間件“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);
}
}
它還在會話中保存用戶之前想要訪問的頁面,登錄后,我將他重定向到該頁面:
登錄控制器.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", "LoginController@getLogin");
Route::post("login", "LoginController@postLogin");
});
我的網站使用 HTTPS,這可能會導致會話出現一些問題嗎?
使用back()
函數。 從文檔:
有時您可能希望將用戶重定向到他們之前的位置,例如當提交的表單無效時。 您可以通過使用全局
back
助手函數來實現。 由於此功能使用會話,因此請確保調用 back 函數的路由正在使用 web 中間件組或應用了所有會話中間件:
Route::post('user/profile', function () {
// Validate the request...
return back()->withInput();
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.