我正在处理两个独立的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的相同用户数据登录。有些事情就像我在两个网站中登录一样。而且我不知道为什么。你能给我任何建议吗?
答案 0 :(得分:3)
我认为Web项目在localhost中运行。我错了吗?我想您可以访问测试请求此URL http://localhost:XXXx
因此,当您为一个网站存储了一个登录cookie时,如果另一个网站也运行在该网站中,该网站会检查您已经拥有的cookie。
我建议您在测试每个网站之前删除会话和Cookie。
其他好方法是在本地Web服务器中创建虚假域,并编辑hosts文件以将域指向127.0.0.1并测试在每个不同假域中使用导航器编写的站点