저는 authlogic을 사용하여 사용자를 인증합니다.declarative_authorization 및 authlogic을 사용하여 current_user 확인
def current_user_session
return @current_user_session if defined?(@current_user_session)
@current_user_session = UserSession.find
end
def current_user
return @current_user if defined?(@current_user)
@current_user = current_user_session && current_user_session.record
end
나는 또한 현재 사용자의 권한을 관리 할 수 declarative_authorization을 사용하여 다음과 같이 내 컨트롤러에서 나는 CURRENT_USER (문서화) 정의를 사용합니다. 정상적인 런타임 시나리오에서는 모두 정상적으로 작동하지만 "get_with"와 같은 요청 문을 사용하는 기능 테스트를 만들 때 컨트롤러의 current_user는 nil입니다. declarative_authorization 테스트 도우미 코드를 살펴본 결과,이 시나리오에서 declarative_authorization gem은 실제로 현재 사용자를 Authorization.current_user (실제로는 Thread.current [ "current_user"]에서 가져옴)에 저장한다는 것을 알았습니다. 따라서 현재 사용자가 다른 시나리오에서 어떻게 처리되는지에 대한 혼란이있는 것으로 보입니다.
내 질문 : 일반적인 런타임과 테스트 시나리오 모두에서 current_user를 찾는 적절한 방법은 무엇입니까?
그래, 나는 그것을 시도했다. 그러나 그 반대의 경우는 기능 테스트에서 Authorization.current_user에 올바른 사용자가 있지만 c.current_user == nil이 포함되어 있습니다. 그래서이 진술은 작동하지 않을 것입니다 ... –
하나의 질문 테스트에서 사용자 세션을 어떻게 유지합니까? 세션을 디버그하려고하면 현재 어떤 이유로 든 지속될 수 있습니다. –
필자는 authlogic을 사용하여 사용자로 로그인하려면 UserSession.create (user (: admin))를 통해 세션을 작성해야하며 authlogic 현재 사용자가 작동해야합니다. – Draiken