2017-02-01 4 views
1

저는 Laravel 5.3을 사용 중이며 로그인 후 사용자가 지정한 URL로 사용자를 보내려고합니다.Laravel에 로그인 한 후 지정된 URL로 어떻게 되돌릴 수 있습니까?

JavaScript를 많이 사용하고 로그인 한 후 특정 URL로 돌아가고 싶습니다. URL은 사용자 작업에 따라 다릅니다. 예를 들어

: 내가 로그인 화면이 URL을 전달할 수 있습니다,하지만 난 로그인이 성공 후 리디렉션에 대한 인증 컨트롤러를 통과 할 수있는 방법을 찾을 수 없습니다 /login?r=/come/here/after/login

. 응용 프로그램에/HTTP/Kernel.php

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

을 새로운 미들웨어를

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; 
    } 
} 

를 선언하고 추가 : 귀하의 경우

+0

return redirect() -> 의도 한 ('your-url'); 귀하의 인증 함수 또는 그냥 URL로 리디렉션하려면 로그인 URL을 함께 전달됩니까? – rahulsm

+0

단순히 세션에 저장하고 싶습니다. (예, 사용자가 여러 개의 탭을 열었을 때 예기치 않은 결과가 발생할 수 있으며 그 중 하나 이상에서 로그인 프로세스가 시작될 수 있습니다.) – CBroe

답변

1

난 그냥 사용자 리디렉션 경로에 대한 사용자 정의 인증 미들웨어를 만들 것 당신의 경로 :

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

아마 사소한 변화가 필요하지만 작동해야합니다 :)

+0

그게 효과가 없을거야. 모든 링크마다 다르며 질의 문자열로 전달됩니다 – Mike

+0

@mikemike가 당신을 잡았습니다! 나는 갱신했다. – Troyer

+0

흠,'\ Auth :: id()'는 미들웨어 내부에서 항상 'null'입니다. 이 시점에서 로그인하지 않은 것처럼 보입니다 – Mike

관련 문제