두 개의 요청 (iframe)이 브라우저에서 레일스 앱 (레일 3.2, 개발자 2.2.0)으로 이루어진 경우 SSO를 통해 로그인을 시작한 다음 요청한 페이지 문제는 session[:user_return_to]
에 대한 경쟁 조건이 있고 두 페이지가 같은 페이지를 렌더링하므로 iframe 중 하나가 잘못된 페이지를 렌더링하게됩니다. 로그인 할 때 Devise에서 원래 경로 유지하기
이
대신 요청이 돌아 오면/sso/new
로 리디렉션 렌더링에 지금
authenticate_user!
방법은SessionsController#new
프로세스 요청과에 전화/users/sign_in
페이지로 리디렉션을 고안하는 응용 프로그램의 흐름입니다 SSO에서/sso/create
으로 사용자를 로그인하고 (요청시) 요청한 페이지로 리디렉션합니다.
2 단계에서 URL을 /sso/new
에 대한 매개 변수로 전달할 수 있으며 3 단계에서 해당 매개 변수가 다시 나에게 반환됩니다. 문제는 내가 SessionsController#new
에있을 때 이미 손실되었다는 것입니다. 내가 가지고있는 것은 session[:user_return_to]
이며 이미 iframe 중 하나에 대해 잘못된 값을 가지고 있습니다 (세션이 공유되고 경쟁 조건이 발생 함).
소환장 오류를 통해 리퍼러를 전달할 수 있는지 궁금합니다. 필터 전에 authenticate_user!
을 실행할 때 관리자 또는 매개 변수로 매개 변수를 전달할 후크가 있는지 확인할 수 없었습니다. 요청하는 동안 나는 리퍼러를 가지고 있지만 소장은 /users/sign_in
으로 리다이렉트 할 때 그것을 지키지 않습니다.