检查客户端的登录状态

时间:2013-05-02 07:08:02

标签: javascript client-side login-control

我想了解在客户端检查登录状态的最佳做法是什么。我要做的是检查用户的登录状态,如果他没有使用JavaScript登录打开的弹出框(登录框)。

我可以想到2个选项

  1. 对服务器进行AJAX调用并获取登录状态。
  2. 在HTML页面中添加一个变量,然后选中此变量 客户端的JavaScript。我当然不相信这张支票 仍然在服务器的控制器中进行所有必要的检查 侧。
  3. 选项1很好,但它可能会增加一些延迟/延迟,因此在用户体验方面可能不是最佳选择。或者我错了,有一个好的服务器(我计划使用亚马逊网络服务)这个延迟将是如此最小,用户将无法理解它(问题可能看起来很傻,但这是我的第一个网站开发,所以请理解:))

    我看不到选项2的任何问题,如果我错了请纠正我。正如我所说,我试图了解最佳实践。

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进行检查?如果用户未登录,则使用登录页面进行响应?