2010-02-26 4 views
0

장고 프로젝트의 모든로그 아웃 기능

2 개 템플릿 창을 열 경우 및 로그 아웃 1 창에 트리거되는 경우 로그 아웃이 트리거 될 수 있도록 다른 창 쿠키는 쿠키를 삭제 cleared.How되지 않습니다 .

def logout(request): 
    //request = redirect('webbie.home.views.loginpage') 
    //request.delete_cookie('user_location') 
    return auth_logout(request) 

감사합니다 ..

답변

0

당신은 정확히 무엇을 의미합니까? 동일한 웹 사이트에서 창을 열어야하는 경우 한 창에서 로그 아웃하면 다른 창에서 로그 아웃되지 않은 것입니까? 의심 스럽다.

물론이 특정 창에서 아무 것도하지 않았기 때문에 다른 창에서 특정 페이지로 리디렉션되지 않습니다. 그러나 로그인 한 사용자 만 사용할 수있는 링크를 클릭하면 로그인 페이지로 리디렉션되어야합니다.

아니요. 사용자가 적어도 Ajax 및 일부 사용자 정의 검사가없는 다른 사이트에서 로그 아웃 한 경우 클라이언트 측에서 감지 할 수 없습니다.

+0

리디렉션는 로그인 상태를 가지고있는 두 번째 창에서 일어나는되지 set.So 내가 – Hulk

+0

그 일이 일어나고하지 쿠키 문제로있을 수 있습니다 가르쳤다. 당신이 페이지를 바꾼다면 여전히 로그인 했습니까? 아약스 스타일의 앱을 사용하는 경우 사용자 상태를 확인한 후 필요한 경우 사용자를 리디렉션합니다. – jujule

1

쿠키에는 세션 키만 저장해야합니다. 그런 다음 서버는 모든 세션 키를 추적하고 만료 날짜/시간 및 사용자 계정을 해당 세션과 연관시켜야합니다. 로그인하는 모든 사용자에 대해 새로운 세션 키를 제공해야하지만 여러 로그인/사용자 계정을 허용 할 수 있습니다. 그래서 쿠키가 유효한지 확인하면 서버 DB를 참조하여이 세션 키가 있는지 확인해야합니다. 그 중 하나가 로그 아웃했을 때 사용자 계정에 대한 모든 활성 세션을 "종료"하려는 경우 서버 세션 키 목록에서 모든 세션 키를 제거하면됩니다.
중요한 데이터는 쿠키에 저장하지 말고 세션 키로 충분해야하며 서버에서이 키에 데이터를 연결해야합니다. 이제 로그인 한 사용자를 제어 할 수 있습니다. 이 문서에
더 장고 세션 정보 : 로그인 페이지로 http://docs.djangoproject.com/en/dev/topics/http/sessions/