1

我正在处理两个独立的 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 中没有用户。我的问题是:当我以 user1 身份登录到 web project1 时,如果 web project2 在浏览器中查看,它显示我也以 user1 身份登录,并且在 project1 中使用相同的用户数据。有些事情就像我在两个网站上都登录一样。我不知道为什么。你能给我什么建议吗?

4

1 回答 1

3

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

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

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

于 2012-09-17T22:10:33.933 回答