Django 사이트에서 인증을 어떻게 활성화하고 게시물을 투명하게 보존하거나 데이터를 얻을 수 있습니까?

StackOverflow https://stackoverflow.com/questions/583857

문제

누군가가 HTML 양식을 편집하고 있으며, 세션 시간이 소요된다고 가정하면, 사용자가 양식에 입력 한 콘텐츠를 잃지 않고 개인이 어떻게 개체를 재 인증 할 수 있습니까?

스 니펫 Django 스 니펫 : 전체 사이트에 로그인해야합니다 사이트 전체 인증을 수행하는 방법을 제안하지만 문자열의 GET 구성 요소를 잃어 버릴 것으로 예상하고 (Request.Path가 포함되지 않기 때문에) 게시물 데이터를 잃어 버릴 것으로 예상합니다.

게시물을 보존하고 불편한 시간 초 나는 Finessed 웹 사이트가 이것을 지능적으로 처리하는 경향이 있다는 것을 알았으며, Django에서 그것을 할 수 있기를 원합니다 (다른 사람들과 마찬가지로 상상합니다!).

생각은 감사 할 것입니다. 고맙습니다.

도움이 되었습니까?

해결책

두 가지 제안이 있습니다.

리디렉션/미들웨어

이미 로그인 요구 사항을 처리하기 위해 미들웨어를 사용하고 있으므로이 미들웨어를 수정할 수 있습니다. 또는 로그인 미들웨어 이후 호출되는 다른 미들웨어 클래스를 만듭니다. 이러한 아이디어는 서로 얽혀 있으므로 기존 아이디어를 수정하는 것이 더 합리적 일 수 있습니다.

  1. 로그인하지 않으면 미들웨어에서 GET 및 게시물 데이터를 캡처 한 후 세션에 저장하십시오.
  2. 사용자가 인증 된 경우 #1에 설정된 값을 확인하십시오. 존재하는 경우 request.get 및 request.post를 수정하여 반사하고 세션 데이터를 삭제하십시오.

나는 이것이 깨끗하게 작동해야한다고 생각하며 많은 사람들이 유용하다고 생각합니다. 그것은 훌륭한 게시물 일 것입니다 djangosnippets.org.

Ajax 기술

양식 처리가 이미 제자리에 있지만 더 나은 사용자 경험을 만들 수있는 경우에는 실용적이지 않습니다. 비동기 적으로 게시하면 JavaScript 핸들러가 "로그인 필수"응답 코드를 인식 한 다음 로그인을 요청하는 팝업 대화 상자를 표시 할 수 있습니다. 완료되면 사용자는 양식을 다시 제출할 수 있습니다.

다른 팁

추가하다 onsubmit JS를 통해 세션을 확인하고 진행하기 전에 로그인하는 데 신속하게 사용하는 모든 양식을 처리합니다. 이러한 방식으로 양식 제출은 사용자가 다시 로그인하기 전에 실제로 발생하지 않습니다.

그리고 로그인 한 사용자가 세션에서 동일하게 유지되는지 확인하십시오.

정확히 django 별은 아니지만 HTTP (Stationeles)별로 구체적이지는 않습니다 ... 경우 시스템은 게시물을 처리하는 동안 리디렉션을 발행하는 것으로 끝나고 (원래 게시물에서 얻을 수 있도록 전환) 데이터를 잃어 버릴 위험이 있습니다. 등) 및 저장된 열쇠를 인증 (또는 기타) 프로세스를 통해 전달합니다.

가장 간단한 것은 키에 대한 제로 관리가 필요한 쿠키입니다. URL 사용자의 더 어렵지만 방탄 (Read-Poly Cookie jars에 대한 방탄)은 핵심이며 요청에서 요청으로의 연속 릴레이 (거의 10 년 전의 솔루션의 세션).

인증 (또는 기타 프로세스) 데이터 (및 프로세스 중단)를 완료하면 전달 된 키 (쿠키 또는 GET 요청 변수)에서 데이터 스토어에서 선택할 수 있습니다.

나는 일반적으로 세션을 좋아하지 않지만, 당신이 이미 그것을 사용하고 있다고 인증 된 사이트를 사용하고 있다고 생각하지만 위의 답변은 당신의 접근 방식에 적합 할 것입니다.

세션이 없으면 Daniels Answer와 비슷한 일을 할 것입니다. 즉, 원래 게시물을 잡고 미들웨어에서 얻을 수 있지만 게시 된 정보를 포함하도록 리디렉션을 변경합니다.

이것은 Gets가 더 쉽고 일반적으로 로그인 URL의 리디렉션 구성 요소로 인코딩 된 전체 GetString입니다.

게시물의 경우 더 작은 양식에 대해 잘 작동하는 Get 메소드로 변환 할 수 있지만 URL을 너무 길게 만드는 더 큰 형태의 경우 다시 게시하여 데이터를 인코딩 된 로그인 양식에 게시하고 단일로 저장할 수 있습니다. HIDDEN (거의 .NET ViewState와 거의 비슷합니다)

Django 에서이 작업을 수행하는 것은 리디렉션을 수행 할 수 없으므로 까다 롭기 때문에 미들웨어를 사용하여 로그인보기를 수동으로 호출하고 Httpresponse에 편지를 씁니다. 이것을 더 살펴본 후 편집 한 후 분명히 Magic Admin Side Fo Django는 이미 구현 된 것과 비슷한 것이 있습니다. Jerry Stratton

좋은 옵션 인 것 같습니다. 시도해보고 피드백을받을 것입니다.

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