문제

Github에서 발견 된 Restful_authentication의 현재 버전을 사용하고 있으며 이상한 세션 문제가 많이 있습니다. 서버는 어떻게 든 사용자에게 세션을 할당하는 것 같습니다. 이것은 로그 아웃/로그인 장벽을 건너는 경우에만 발생합니다.

여기 예입니다. 서버에서 세션이 활성화되지 않으면 사용자 A가있는 계정에 로그인하면 다른 컴퓨터에서 사용자 B에 로그인 한 다음 사용자 B에서 로그 아웃 할 때 로그 아웃 리디렉션이 발생한 후 언젠가 로그인하면 로그인됩니다. 사용자 A.이 시점에서 해당 사용자로 로그인 한 것처럼 사이트를 계속 탐색 할 수 있습니다! 내가 로그를 통해 관찰 한 것은이 납치가 발생하면 세션 ID가 동일하지 않다는 것입니다. 사용자 A는 두 세션 모두에 로그인되었지만 세션 ID는 완전히 다릅니다. 이것은 일어날 수있는 일의 한 예일뿐입니다. 이 문제는 무작위로 보이기 때문에 안정적으로 재현 할 수 없습니다.

환경이나 실행중인 서버의 증상이 아닌 것 같습니다. 몽렐과 승객을 사용하여 문제를 재현 할 수 있습니다. 나는 또한 개발과 생산에서 그것을 보았습니다. 이 응용 프로그램에서 DB 기반 세션을 사용하고 있으며 Rails 2.1.1에서 실행 중입니다. 발전기를 호출 할 때 상태 옵션을 적용했습니다. 그렇지 않으면 세션을 처리하는 방법에 대한 다른 수정은 없습니다.

여기에서 업데이트는 Restful_authentication에서 직접 발생한 범죄 방법입니다.

# Accesses the current user from the session.
# Future calls avoid the database because nil is not equal to false.
def current_user
  @current_user ||= (login_from_session || login_from_basic_auth || login_from_cookie) unless @current_user == false
end
도움이 되었습니까?

해결책 2

나는 이것이 작업 일 정도로 많은 대답인지 모르겠다. 내가 한 것은 쿠키 기반 세션으로 전환하는 것이며 모든 것이 원활하게 작동합니다.

다른 팁

귀하 (또는 Restful_authentication을 작성한 사람들)가 클래스 변수에서 현재 사용자를 캐싱하는 경우 발생할 수 있습니다. 나는 "사용을 옹호하는 기사를 보았다"User.current_user"그러나 수업은 요청에 따라 캐시되므로 세션 오염을 일으킬 수 있습니다.

이 사이트가 원격입니까? 동일한 네트워크의 두 개의 별도 컴퓨터에 로그인하고 있습니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top