2014-04-15 3 views
3

인증 프로세스를 트리거 한 페이지로 리디렉션해야하는 Laravel 4 용 사용자 지정 Auth 드라이버를 사용하고 있습니다. 드라이버는 완전히 다른 도메인의 단일 사인온 서비스로 사용자를 내 보낸 다음 서비스가 사용자에게 서명 한 후 다시 사인합니다. SSO 서버에서 사용자가 처음 반환 될 때까지 모든 작업이 올바르게 작동합니다 . 내가 return Redirect::intended(); 문을 사용하여 사용자가 될 필요가있는 곳으로 돌아갈 수 있지만 http://www.some.dev/secret에 액세스하지 않고 동일한 경로로 리디렉션되는 경우 사용자는 http://www.some.dev/http://www.some.dev/secret으로 리디렉션되고 자연스럽게 제대로 작동하지 않습니다. Laravel이 REQUEST_URI 세션 변수를 저장하는 방법을 추적했으며 전체 URL을 가져 오는 것으로 보입니다. 다른 사람들이 잘못 리디렉션되는 방법을 모르겠지만 누군가가이 문제에 직면했는지 궁금합니다. 잘못된 구성 파일인지 또는 프레임 워크를 조정했는지에 관계없이 문제를 해결 한 방법에 대해 궁금합니다.laravel 전체 URL로 리디렉션 :: 된() 리디렉션

ETA는 : 404 스택 추적에, Laravel은 REQUEST_URI 값이 /http://www.some.dev/secret로 설정했다. 그래서 그것은 .htaccess goof가 아닌 것처럼 보인다.

, η2 : 테스트 내 경로 두 가지 방법 :

Route::get('secret', array('before' => 'auth', 'uses' => '[email protected]'));

Route::get('/secret', array('before' => 'auth', 'uses' => '[email protected]'));

차이

.

eta3 : 계속 추가 할 것입니다. 따라서이 동작은 Eloquent (SSO가 아님)에서 로그 아웃 할 때만 발생하며 처음으로 페이지로 이동하는 경우에도 발생합니다. 처음부터 SSO 또는 Eloquent에 로그인하지 않았다고 가정 해 봅시다. SSO를 통해 사인을 한 다음 내부적으로 Eloquent를 통해 로그인합니다. 내가 잘못 REQUEST_URI. 나는 주소창으로 돌아가서 http://www.some.dev/ 뒤에 물건을 버리고 secret을 다시 입력하십시오 (http://www.some.dev/secret으로 바로 검색). 나는 아무 문제없이 페이지에 간다. 내 페이지에 Eloquent 자격 증명을 지우는 로그 아웃 링크가 있습니다. 나는 또한 페이지의 하단에 $_SERVER['REQUEST_URI']을 울리고, 나는 그것이 /secret이라고 봅니다. Eloquent 자격 증명을 지우지 만 SSO 자격 증명을 유지하는 로그 아웃 버튼을 클릭합니다. 나는 /secret으로 돌아가보고 똑같은 말도 안되는 REQUEST_URI을 본다. 선택을 취소하고 secret을 다시 입력하면됩니다. 그래서 내가 Auth::login으로 나의 맹신한 신임장을 다시 확인할 때 내 REQUEST_URI이 엉망이 될 것 같습니다. 다른 도메인에서 자격 증명을 수신 거부하는 것이므로 프레임 워크가 상대 URL을 정적 도메인으로 변환해야 할 수 있습니까?

+0

실제로 'REDIRECT_URI'앞에 슬래시가 있습니까? 그게 가장 확실한 문제입니다. – Joost

+0

나는 그것을 보는 두 가지 방법이 있다고 생각한다 : 그것은/[상대 경로] 또는 [전체 경로]이어야 하는가? 나는 어느 쪽이든을 위해 침전 할 것입니다. 'Illuminate \ Routing \ UrlGenerator.php : 61'은'$ this-> request-> fullUrl();'을 반환하기 때문에 Laravel이'full path'가되도록 의도 한 것 같습니다. – mounty

답변

0

처음에 SSO 서버로 전달하는 redirectBackTo URL이 잘못된 것 같습니다.