2010-02-26 117 views
0

所有注销功能

在Django项目,如果2个模板窗口被打开,如果注销在1个窗口触发其他窗口cookie不会cleared.How删除Cookie也使注销将被触发。

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

谢谢..

回答

0

你是什么意思是什么呢?你的意思是,如果你必须在同一个网站打开窗户,并且你在一个窗口注销,你没有注销到另一个窗口?我不信。

当然,您没有在其他窗口中重定向到某个页面,因为您在此特定窗口中没有做任何事情。但是,如果您点击仅适用于登录用户的链接,则应将其重定向到登录页面。

而且,不能在客户端检测到用户是否从另一个站点注销,至少不是没有Ajax和一些自定义检查。

+0

重定向到登录页面是不是在它的登录状态,第二个窗口发生set.So我教有可能是因为问题与饼干 – Hulk 2010-02-26 08:46:50

+0

它没有发生。你的意思是如果你改变页面,你仍然登录? 如果你有一个ajax风格的应用程序,你负责检查用户状态,然后根据需要重定向他。 – jujule 2010-02-26 14:36:32

1

在cookie中,您应该只存储会话密钥。然后,服务器需要跟踪所有会话密钥并将过期日期/时间和用户帐户与它们关联。对于每个登录的用户,都应该给它一个新的会话密钥,尽管你可能允许多个登录/用户帐户。所以当你检查cookie是否有效时,你需要咨询你的服务器数据库,看看你是否有这个会话密钥并且它是有效的。如果您现在想要在用户帐户中注销其中一个帐户时注销所有活动会话,则只需从服务器会话密钥列表中删除所有会话密钥即可。
您应该尝试不在cookie中存储敏感数据,会话密钥已足够,然后让服务器将数据关联到此密钥。现在您可以控制登录的用户。对有文档
更多Django的会话信息:http://docs.djangoproject.com/en/dev/topics/http/sessions/