繁体   English   中英

Laravel 保存之前的 url 并在登录后重定向

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM