우선 : 이 아닌은 this과 같습니다. ModelBackend에는 request
회원이 없습니다.backend.get_user에서 액세스 요청 세션.
전역 요청 개체 또는 세션 ID에 대한 액세스 권한없이 현재 사용자의 세션에 액세스하려고합니다.
왜? 내 자신의 인증 백엔드를 작성하여 ModelBackend
까지 확장했습니다. 그 안에는 모든 요청에 대해 호출되는 get_user (self, user_id)
함수가 있습니다 (이것은 장고 인증 미들웨어에 의해 자동으로 수행됩니다). 불행히도 get_user
은 request
에 액세스 할 수 없지만 그럼에도 불구하고 내 경우에는 세션의 데이터를 확인하고 싶습니다 (왜 다시? 로컬 데이터베이스가 없기 때문에 원격 미들웨어에서 모든 데이터를 가져옵니다.) 어떤 종류의 캐싱을 수행하는 편안한 방법).
죄송합니다. 이것은 오래된 스레드이지만 참조 된 코드를보고 있으며 방금 인증 한 사용자의 요청 데이터에 액세스하는 위치가 표시되지 않습니다. – ThatAintWorking
@RonSmith 링크를 약간 업데이트했습니다. 그 트릭은 모든 것이'RemoteUserMiddleware.process_request'에 의해 수행된다는 것입니다 - 그것은'request' 객체를 전달받습니다 (middleware.py # L40). '원격 사용자'HTTP 헤더 (L50)의 유무를 확인한 후, 'RemoteUserBackend.authenticate' (L73)에 전달하여 결과를'요청'에 저장합니다 (L77). 이 경우 HTTP 헤더의 값만 passeb이지만, auth 백엔드에서 세션 정보가 필요하다면 미들웨어에서 세션 정보를 미리 숨길 수 있습니다. – drdaeman
몇 줄의 코드로 답을 업데이트 하시겠습니까? 감사. –