4

我有一个有效的登录脚本,但是,我想知道当用户已经登录时我应该如何处理额外的登录尝试。如果登录页面发现用户已经登录,它会重定向到主页。

但是,如果用户在登录页面打开了多个浏览器选项卡,使用一个登录,然后尝试使用其他浏览器选项卡再次登录,无论是使用相同的登录名还是另一个登录名,我应该如何处理这两种类型的请求?

更复杂的是,我有一个验证页面,在使用令牌验证用户后,该页面还将登录用户。如果用户已经登录,我应该如何处理?

例如,用户 A 和用户 B 都注册了并且都通过电子邮件收到了令牌。它们都在同一台 PC、同一浏览器、同一会话上。用户 A 验证令牌,然后成功登录。用户 B,然后验证令牌然后登录...?等待用户A已经登录!我应该如何处理用户 A?

这里的最佳做法是什么?

4

3 回答 3

3

如果用户在登录页面打开了多个浏览器选项卡,使用一个登录,然后尝试使用其他浏览器选项卡再次登录,我应该如何处理这个请求?

那么肯定会设置登录会话,并且如果它再次是有效登录,则无需进行身份验证?

通常有 3 种方法来处理额外的登录:

  1. 忽略它,允许人们同时登录不同的位置

  2. 当第二个会话登录时踢出第一个会话。这通常不是最好的解决方案,但它解决了人们关闭浏览器(即未正确注销)然后尝试在新会话中再次登录并被告诉他们不能。

  3. 给用户一个错误,说他们在其他地方登录。如果这样做,请确保活动登录有时间限制,这样如果有人确实忘记在某个地方注销,或者他们的浏览器意外关闭,那么他们仍然能够重新登录 - 他们只需要等待一段时间时间。

就个人而言,除非有异常情况,否则我会选择第二种选择。

于 2012-08-01T09:10:22.763 回答
1

就个人而言,当有人进行双重登录时,首先登录的人会以任何可能的方式退出。

为什么?

基本上是因为如果有人忘记注销并离开他的电脑。返回另一台计算机并尝试登录但无法登录他真的真的很生气。

当用户登录时,在该计算机上或在另一台计算机上以相同帐户登录的所有其他用户都将被注销。允许用户始终登录到他或她的帐户。

你也可以忽略这一点。如果这不会导致您的应用程序出现问题,您可以让某人同时在多个地方使用一个帐户登录。但我们无法为您确定。

至于尝试在同一个浏览器上登录的两个不同用户,我从不让这种情况发生,这在我的应用程序中也是不可能的,因为我为此使用了 cookie。

于 2012-08-01T09:05:52.677 回答
1

使用 cookie:

在登录页面:

<script type="text/javascript">
if(document.cookie.split(";")[0].split("=")[0] != "")//the login page checks for cookies every time it loads.if the password and id are saved,it'll redirects to homepage without showing login page
        {
        window.location.href = "welcome.html";
        }

if(condition)//condition when username and password are valid
            {
                var uname=document.getElementById("zname").value;
                var pswd=document.getElementById("zpswd").value;
                if(document.getElementById("chkbx").checked) //Remember me checkbox (stores username and password until "logout" is clicked in homepage)
                {
                    document.cookie=uname+"="+pswd;
                    alert("You will be automtically logged in when you visit this page again" +uname);
                }



                window.location.href="welcome.html";
            }
</script>

在主页中:

<script type="text/javascript">
function del_cookie(name)
            {
        document.cookie = name + '=; expires=Thu, 01 Jan 1970 00:00:01 GMT;';
    }
    function signOut()
            {
        del_cookie(document.cookie.split(";")[0].split("=")[0]);
        window.location.href ="login_page.html"
    }
</script>

因此,登录页面每次加载时都会检查 cookie。如果密码和ID被保存,它将重定向到主页而不显示登录页面

于 2012-08-01T09:08:17.973 回答