2011-11-09 5 views
23

레일 3.0.9, 루비 1.9.2, 데비드 1.3.4를 사용하고 있으며, 이것을 일반적인 레일 요청이라고 생각하지만 요청 URL 매개 변수에 액세스하려면 데비지 세션 새로운 뷰가 필요합니다. 취급 질문. 기본적으로 로그인 화면으로 사용자를 리디렉션하는 Devise 인증 리소스에 대한 요청이 이루어집니다. 로그인보기에서, 나는 예를 들어 요청 URL에 대한 액세스를 필요,이, 내가 그 URL에 액세스 할 필요가 시작 리디렉션 로그인 페이지에서레일 3 요청 리퍼러를 얻으십시오

http://mysite.com/article/5?type=blah 

에서 호출 요청 URL이며, 사람이 내가 할 수있는 방법을 알고 이?

답변

42

컨트롤러에 request.referer 또는 request.env['HTTP_REFERER']을 사용하여 referer URL을 얻을 수 있습니다.

+0

시도했는데 작동하지 않았다면 로그인 화면 URL이 표시됩니다. 이것으로, 나는 세션 컨트롤러에서 의미. 'articles' 컨트롤러에 코드를 넣으면 로그인이 인증 될 때까지 실행되지 않습니다. –

+0

귀하의 요구 사항을 올바르게 이해하면 사용자를 로그인 작업 이전 페이지로 리디렉션하고 싶습니다. 사용자가 로그인을 클릭 할 때 세션에서 리디렉션 URL을 저장하지 않는 이유는 무엇입니까? – topek

+0

로그인 페이지로의 리디렉션이 이미 올바르게 처리되었으므로 로그인 페이지에서 사용자의 creds를 묻는 메시지가 표시됩니다. 원래 요청 URL에 대한 액세스가 필요합니다. 나는 원래의 호출이 브라우저가 아닌 다른 서버에서 온다는 것을 분명히해야한다. –

3

방금 ​​WEBrick이 request.referrer을 잘못 처리한다는 사실을 알았습니다. 그러나 걱정하지 마십시오. 유니콘이 올바르게 처리합니다. 다른 서버에서 테스트하지 않았습니다. 너는 너의 것과 이것을 확인해야한다. WEBrick을 프로덕션 서버로 사용하지 않는다고 생각합니다.

+0

실제로 WEBrick은 적합하지 않습니다. 프로덕션 서버. 또한 WEBrick과 Puma가'request.referrer'를 처리하는 방법에 차이점을 발견했습니다.'request.referrer'가 WEBrick을 사용하여 예상대로 작동하지 않는지 확인해 볼 가치가 있습니다. – zelanix