Перенаправление на целевой URL Lumen

Я строю немного люмен приложение с простым API & Аутентификация.

Я хочу перенаправить пользователя на предполагаемый URL-адрес, и если он посещает /auth/login сам хочу, чтобы он перенаправил на /foo,

в Laravel Docs есть эта функция: return redirect()->intended('/foo');

Когда я использую это в моем маршруте, я получаю ошибку в журнале сервера, которая говорит это:

[30-Apr-2015 08:39:47 UTC] PHP Fatal error:  Call to undefined method Laravel\Lumen\Http\Redirector::intended() in ~/Sites/lumen-test/app/Http/routes.php on line 16

Я думаю это потому что люмен это уменьшенная версия Laravel и, возможно, эта функция не реализована (пока).

1

Решение

Я решил эту проблему, немного подкорректировав Middleware, а также сохранив Request :: path () в сеансе.

Вот как выглядит мое Middleware:

class AuthMiddleware {

public function handle($request, Closure $next) {
if(Auth::check()){
return $next($request);
} else {
session(['path' => Request::path()]);
return redirect('/auth/login');
}
}
}

И в моем rout.php у меня есть этот маршрут (который я передам на контроллер как можно скорее):

$app->post('/auth/login', function(Request $request) {
if (Auth::attempt($request->only('username', 'password'))){
if($path = session('path')){
return redirect($path);
} else {
return redirect('/messages');
}
} else {
return redirect()->back()->with("error", "Login failed!");
}
});

Благодаря ИДИР ФЕТТ за предложение метода Request :: path ().
Надеюсь, это поможет нескольким людям, которые являются новыми для
люмен, кстати, это отличная основа. 🙂

5

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

Действительно, глядя на исходный код Lumen, он не реализован:
https://github.com/laravel/lumen-framework/blob/5.0/src/Http/Redirector.php

Ваши варианты:

  1. Проверьте реализацию Laravel (Symfony?) И поместите ее в свой собственный код
  2. Напишите полностью свою собственную реализацию — один очень простой способ сделать это — сохранить URL-адрес запроса в сеансе, перенаправить на страницу входа в систему и, когда пользователь успешно войдет в систему, получить URL-адрес из сеанса и перенаправить его
2

Я думаю, что вы должны указать имя маршрута в предполагаемом методе, а не URI:

return redirect()->intended('foo');

при условии, что вы уже назвали маршрут, я думаю, что это все еще работает:

return Redirect::intended('/foo');

ОБНОВИТЬ:
попробуй это:
получить запрошенный URI:

$uri = Request::path(); // Implemented in Lumen

затем перенаправить на запрошенный URI:

return redirect($uri);

это может сработать !!

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