2013-01-10 3 views
1

login_required는 장고의 데코레이터로 사용할 수 있지만, 사용자/비밀번호가있는 login.html은 앱에 의해 제한됩니다.는 django에 로그인하기 전에 저장해야합니까?

@login_required 
def myview(request): 
... 

이제 login.html에 버튼을 표시하여 사용자를 다른 사이트의 oauth 플로우로 리디렉션하려고합니다. 사이트에서 내 콜백 URL을 정적으로 수정했습니다. 그리고 사용자/암호는 이제 필요하지 않습니다.

그래서 어떻게 oauth 서버에서 콜백 후 사용자가 마지막 요청 (아마도 데이터로 게시)로 리디렉션 할 수 있습니까?

세션/쿠키를 사용하여 요청 개체를 저장해야합니까?

답변

1

Django의 익명 사용자 세션에 세션 정보를 첨부 할 수 있습니다. 모두가 익명의 세션 쿠키를 얻습니다. 이 데이터는 사용자가 로그인 한 후에도 보존됩니다.

세션 데이터가 데이터베이스에 저장되어 있으면 시간이 지남에 따라 점점 더 많은 공간을 차지하게되며 주기적으로 작업을 지우는 것이 좋습니다 이전 세션.

하지만 나중에 재생할 수 있도록 POST 데이터를 저장해야합니까?

POST 요청이 멱등 (Idempotent)이고 이미 한 번 실행되었으며 사용자가 볼 수있는 올바른 페이지를 생성하는 데 데이터가 사용되고 있다고 확신하는 경우가 있습니다. .

아마도 일반적인 솔루션으로 구현해서는 안됩니다. OAuth를 통해 리디렉션 한 다음 자동으로 인증 된 사용자로 POST하는 GET 요청을 구성 할 수 있다면 손에 주요 CSRF 취약점이있을 가능성이 큽니다.

관련 문제