Целевой URL Laravel всегда перенаправляется в индекс

Я столкнулся со странной (по крайней мере для меня) проблемой при работе с Laravel 5.3.
Я пытаюсь получить предыдущую ссылку (до того, как пользователь вошел в систему) через сеанс и перенаправить их обратно на эту ссылку после того, как они успешно вошли в систему.

Я использую эту строку кода, чтобы положить в сессию:

Session::put('url.intended', $link);

Я использую эту строку кода, чтобы получить из сессии:

Session::get('url.intended', url('/'));

Когда я запускаю в разработке и читаю из сессии, я получаю этот URL как url.intended:

http://example.test/profile/data?_url=%2Fprofile%2Fdata

С этим URL редирект работает нормально после входа в систему!

Теперь, когда я нахожусь в производственном режиме (AWS, ELB, NGINX), я получаю этот URL как url.intended:

https://example.org/profile/data

без? _url =% 2Fprofile% 2Fdata, поэтому не работает и перенаправляет на домашнюю страницу.

Это проблема Laravel 5.3 или неправильная настройка loadbalancer и nginx?

Конфигурация nginx:

server {
listen 80;
server_name example.org;
rewrite ^/(.*)$ https://www.$host$request_uri redirect;
}


server {

listen 80;
root /var/www/public;
index index.php index.html index.htm;
server_name  www.example.org;

if (!-e $request_filename) {
rewrite ^.*$ /index.php last;
}

if ($http_x_forwarded_proto = http) {
return 301 https://$server_name$request_uri;
}

location / {
sendfile off;
try_files $uri $uri/ /index.php?_url=$uri&$args;
}

location ~ \.php$ {

try_files $uri = 404;
fastcgi_pass phpfpm:9000;
fastcgi_index /index.php;
include fastcgi_params;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

}
}

Что-то не так с моей настройкой или что-то в laravel, что я могу сделать, чтобы не удалить? _Url from url.intended ??

0

Решение

Если вы используете Laravel 5.3:

Изменить новый перенаправитель авторизации Middleware

/app/Http/Middleware/RedirectIfAuthenticated.php

Измените функцию дескриптора, чтобы она выглядела так:

public function handle($request, Closure $next, $guard = null)
{
if (Auth::guard($guard)->check()) {
return redirect()->intended('/home');
}

return $next($request);
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]