为什么其他网络项目显示我登录?

时间:2012-09-17 22:05:13

标签: c# asp.net

我正在处理两个独立的Web项目,但对它们使用相同的身份验证方案。 以下是我的登录代码的一部分:

public void Login(string username, string password, bool staySignedIn)
{
    if (this.IsLockedOut(username))
    {
        this._view.ShowMessage("Your account has been locked!");
        return;
    }
    else if (!this.IsApproved(username))
    {
        if (!string.IsNullOrEmpty(this.webContext.CurrentUserID))
        {
            this.membershipService.ChangeApprove(this.webContext.CurrentUserIdFromQuery);
            this.DoLogin(username, password, staySignedIn);
        }
        else
            this._view.ShowMessage("Your account is not activated yet");
    }
    else
        this.DoLogin(username, password, staySignedIn);
}

private void DoLogin(string username, string password, bool staySignedIn)
{
    try
    {
        FormsAuthentication.SetAuthCookie(username, staySignedIn);
        if (!string.IsNullOrEmpty(this.webContext.GetReturnUrl))
            this.redirector.GotoUrl(this.webContext.GetReturnUrl);
        else this.redirector.GotoProfileDefault();
    }
    catch (Exception ex)
    {
        this.logger.PrintToLogFile(ex, false);
        this._view.ShowMessage("Some error code");
    }
}

在project1中,我有3个用户:user1,user2和user3,而project2中没有用户。我的问题是:当我以web1身份登录web1时,如果在浏览器中查看web project2,它会显示我在project1中以user1的相同用户数据登录。有些事情就像我在两个网站中登录一样。而且我不知道为什么。你能给我任何建议吗?

1 个答案:

答案 0 :(得分:3)

我认为Web项目在localhost中运行。我错了吗?我想您可以访问测试请求此URL http://localhost:XXXx因此,当您为一个网站存储了一个登录cookie时,如果另一个网站也运行在该网站中,该网站会检查您已经拥有的cookie。

我建议您在测试每个网站之前删除会话和Cookie。

其他好方法是在本地Web服务器中创建虚假域,并编辑hosts文件以将域指向127.0.0.1并测试在每个不同假域中使用导航器编写的站点