1

私は 2 つの別々の 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 には、 user1 、 user2 、 user3 の 3 人のユーザーがいて、 project2 にはユーザーがいません。私の問題は、web project1 に user1 としてログインすると、web project2 がブラウザーで表示されている場合、project1 で同じユーザー データを使用して user1 としてもログインしていることを示しています。理由はわかりません。何か提案をお願いできますか?

4

1 に答える 1

3

Webプロジェクトはローカルホストで実行されていると思います。私が間違っている?このURLを要求するテストにアクセスできると思います。http://localhost:XXXxしたがって、一方のWebサイトのログインCookieを保存しているので、もう一方のWebサイトもローカルホストドメインで実行されている場合、このサイトは既に持っているCookieをチェックします。

各サイトをテストする前に、セッションとCookieを削除することをお勧めします。

他の良い方法は、ローカルWebサーバーに偽のドメインを作成し、hostsファイルを編集してドメインが127.0.0.1を指すようにし、ナビゲーターでそれぞれ異なる偽のドメインを書き込んでいるサイトをテストすることです。

于 2012-09-17T22:10:33.933 に答える