我想了解在客户端检查登录状态的最佳做法是什么。我要做的是检查用户的登录状态,如果他没有使用JavaScript登录打开的弹出框(登录框)。
我可以想到2个选项
选项1很好,但它可能会增加一些延迟/延迟,因此在用户体验方面可能不是最佳选择。或者我错了,有一个好的服务器(我计划使用亚马逊网络服务)这个延迟将是如此最小,用户将无法理解它(问题可能看起来很傻,但这是我的第一个网站开发,所以请理解:))
我看不到选项2的任何问题,如果我错了请纠正我。正如我所说,我试图了解最佳实践。
答案 0 :(得分:1)
避免服务器命中/网络延迟的最佳方法;您可以放置一个具有登录状态的客户端变量(正如您在问题中所述),但主要是避免服务器命中和网络延迟(AJAX),您只需使用服务器端的相同逻辑来设置登录状态假的。假设逻辑是在5分钟不活动后将登录状态设置为false,您也可以在客户端执行相同的操作。
总的来说,我的意思是说,在客户端实现相同的逻辑,将登录状态设置为false。并基于此,您可以立即显示您的登录对话框,任何延迟。在最佳实践中,您应该始终进行双重验证,即在服务器端对每个经过身份验证的内容的请求,您应该检查客户端登录状态是否与服务器登录状态匹配,因为客户端的登录状态可以被篡改。
祝你好运......很开心探索: - )
答案 1 :(得分:0)
选项1似乎是最好的,你怎么能知道你保存用户ID的cookie是不是没有调和? 据我所知,最佳做法是向cookie中添加一个哈希值(你可以看到谷歌在他们的cookie中做了这个),然后使用它来检查cookie中的数据在服务器端是否有效,使用一个秘密和/或盐。
http://en.wikipedia.org/wiki/Hash_function
http://en.wikipedia.org/wiki/Salt_(cryptography)
无论如何你可以做的是检查你的客户端javascript中是否存在带有userid的cookie,如果没有,则将用户发送到登录页面。
https://developer.mozilla.org/en-US/docs/DOM/document.cookie
这样,您就不需要为明显注销的用户进行服务器往返。
但是,您是否可以在第一次请求用户对您的serveral进行检查?如果用户未登录,则使用登录页面进行响应?