2017-02-01 2 views
1

Я использую Laravel 5.3 и хочу вернуть пользователя в указанный пользователем URL после входа в систему.Как я могу вернуться к указанному URL после входа в Laravel?

Я использую много JavaScript и хочу вернуться к определенному URL-адресу, который не является URL-адресом, к которому пользователь пытается получить доступ после входа в систему. URL-адрес отличается в зависимости от действия пользователя.

Например: /login?r=/come/here/after/login

я могу передать этот URL на экране входа в систему, но я не могу найти способ, чтобы передать его через к контроллеру Идент для перенаправления после Войти успешно.

+0

return redirect() -> предназначенный ('ваш-url'); в вашей функции аутентификации или просто хотите перенаправить URL-адрес, который будет передан только с URL-адресом для входа? – rahulsm

+0

Я бы просто сохранил его в сеансе ... (Конечно, это может привести к неожиданным результатам, если у пользователя открыто несколько вкладок, а триггеры процесса входа в систему более чем у одного из них. Но насколько это вероятно ...?) – CBroe

ответ

1

В вашем случае я хотел бы создать пользовательские аутентификации промежуточное программное обеспечение только для пользовательских перенаправлены маршрутов:

class PostLoginRedirect 
{ 
    public function handle($request, Closure $next, $guard = null) 
    { 

     $response = $next($request); 

     if (\Auth::id() && isset($request->r)) { 
      // Return the new route redirect. 
      return redirect($request->r); 
     } 

     // Return the custom one in case r? don't exists. 
     return $response; 
    } 
} 

возвещать новое промежуточное программное обеспечение на приложение/Http/Kernel.php

protected $routeMiddleware = [ 
    'login-redirect' => \YourNamespace\PostLoginRedirect::class 
]; 

И добавить к ваши маршруты:

$this->post('login', ['middleware' => 'login-redirect', 'uses' => 'Auth\[email protected]']); 

Возможно, вам нужно внести незначительные изменения, но они должны работать :)

+0

Это не сработает. Он отличается для каждой ссылки, и он передается как строка запроса – Mike

+0

@mikemike получил вас сейчас! Я обновил. – Troyer

+0

hmm, '\ Auth :: id()' всегда 'null' внутри промежуточного программного обеспечения. Похоже, я не вошел в этот момент – Mike