2011-04-29 4 views
2

사용자가 작성할 수있는 양식이 있고 "만들기"버튼을 누르면 양식 데이터가있는 데이터베이스에 새 항목을 만들기위한 POST 요청이 발행됩니다.RoR : POST 전에 사용자를 인증하는 방법

이제 로그인 한 사용자 만 데이터베이스 항목을 만들 수 있도록 허용해야하지만 모든 사용자가 양식을 작성할 수 있도록하고 싶습니다. "만들기"를 클릭 할 때만 내 응용 프로그램이 로그인 페이지에 로그인하지 않은 사용자를 리디렉션하도록합니다. 일단 로그인 한 후에는 사용자가 모든 양식 데이터를 다시 입력 할 필요없이 POST 요청을 계속 처리하고 데이터베이스 항목을 작성하려고합니다.

어떻게 처리하는 것이 가장 좋습니까? POST 데이터를 세션에 넣으시겠습니까? 그런 다음 로그인 성공 후 원래 컨트롤러/작업 (코드를 중복하지 않도록)에서 데이터베이스 항목을 만들고 응용 프로그램 내에서 POST 요청을 발행하려는 경우 (success-login-method에서) 이상한. 더 좋은 아이디어?

감사합니다.

답변

0

인증 방법에 대해 언급하지 않으므로 수동으로 수행하는 것으로 생각됩니다. 등록을 위해 Devise와 같은 보석을 사용한다면 (그리고 내가 권하고 싶습니다), Devise의 인증 도우미를 컨트롤러에 추가하기 만하면됩니다.

수동으로 수행하려면 사용자가 등록 할 때마다 그에게 연결된 세션 ID 변수를 설정해야합니다. 그런 다음, 그 사람이 등록되어 있는지 확인하기 만하면됩니다. 그렇지 않은 경우 작업을 허용하지 않고 리디렉션합니다.

+0

나는 devise를 사용하지만 before_filter authenticate_user! POST 요청에 도움이되지 않습니까? 다시 말해 사용자를 로그인 페이지로 리디렉션하고 권한 부여가 성공한 후 POST 요청을 처리하는 create 메소드로 돌아 가기 – Alexander

+0

예, 컨트롤러의 모든 작업에 대해 게시를 위해 작동합니다. 원한다면 다시 리디렉션하려면 redirect_to : back을 사용하십시오. – Spyros

+0

아, 나도 몰랐어 - authenticate_user 만드는 법에 대한 아이디어! omniauth와 통합하라. 내 로그인 절차는 옴니아 우스가있는 Facebook을 통해 이루어집니다. 그래서 나는 authenticate_user를 원할 것이다! Facebook으로 리디렉션 한 다음 내 POST 요청으로 돌아갑니다. – Alexander

관련 문제