1

より具体的には、クロム。以下は、Firefox、IE、Opera では発生しません。

ログインすると、ブラウザがユーザーのユーザー名とパスワードを保存することを許可するかどうかを尋ねるプロンプトが表示されます。ただし、オプションから何を選択しても (はい、この Web サイトでは使用しない)、ログアウトして再度ログインすると、同じプロンプトが表示されます。

ログイン フォームの HTML は次のとおりです。

    <form id="def_mainForm" runat="server">
<div id="loginContainer">
    <asp:Panel ID="pnlLog" runat="server" DefaultButton="btnLogSubmit">
        <div id="loginFormContainer">
            <div class="logGroup">
                <div class="logLabel boldFont">
                    Email / Username
                 </div>
                 <asp:TextBox ID="username" runat="server" CssClass="loginBoxes" ToolTip="Enter your email address or username here" />
             </div>
             <div class="logGroup">
                 <div class="logLabel boldFont">
                     Password
                 </div>
                 <asp:TextBox ID="password" runat="server" TextMode="Password" CssClass="loginBoxes" ToolTip="Enter your password here" />
                  <a href="respass.aspx" class="logLabel">Forgot your password?</a>
             </div>
             <div id="logButtonHolder">
                 <asp:Button ID="btnLogSubmit" runat="server" Text="Log in" CssClass="defButton" />
             </div>
        </div>
    </asp:Panel>
</div>

このコード ビハインドは次のようになります。

    void btnLogSubmit_Click(object sender, EventArgs e)
{
    this.validateUser(this.username.Text, this.password.Text, false);
}

void btn_gmb_OK_Click(object sender, EventArgs e)
{

}

private void validateUser(string email, string password, bool remember)
{
    Common.Validator validator = new Common.Validator(email, password);
    string response = "";
    int userId = -1;
    int personId = -1;
    bool valid = validator.Validate(out response, ref userId, ref personId);

    if (valid)
    {
        this.Session["gs_sessionId"] =  this.Session.SessionID;
        this.Session["gs_userId"] = userId;
        this.Session.Timeout = 60;
        HttpCookie remCookie = new HttpCookie("gsc_sessionId", this.Session["gs_sessionId"].ToString());
        remCookie.HttpOnly = true;

        if (remember)
            remCookie.Expires = DateTime.MaxValue;
        else
            remCookie.Expires = DateTime.Now.AddMinutes(60);

        Response.Cookies.Add(remCookie);

        gsWs.AddUserLogin(wsPass, userId, Request.UserHostAddress);
        this.Session["gs_person"] = gsWs.GetPersonByUserId(wsPass, userId).OuterXml;
        Response.Redirect("home.aspx");
    }
    else
    {

    }
}

私はこの問題をグーグルで検索しましたが、「autocomplete = off」でこの機能を完全に無効にしたい人にしか出会いませんでした.追加しても同じ問題が発生します.

明らかな何かが欠けていますか?私は何か完全に間違っていますか?あなたが与えることができる助けやアドバイスは大歓迎です。

編集:

Cookie をチェックするコードは次のとおりです。

    protected bool checkAlreadyLoggedIn()
{
    bool loggedIn = false;
    try
    {
        if ((Request.Cookies["gsc_sessionId"] != null) && (Request.Cookies["gsc_sessionId"].Value != ""))
        {
            this.Session["gs_sessionId"] = Request.Cookies["gsc_sessionId"].Value;
            loggedIn = true;
            Response.Redirect("home.aspx");
        }
        if (this.Session["gs_sessionId"] != null)
        {
            loggedIn = true;
            Response.Redirect("home.aspx");
        }
    }
    catch (Exception ex)
    {

    }
    return loggedIn;
}

protected void Page_Load(object sender, EventArgs e)
{
    try
    {
        if (!this.IsPostBack)
            if (!(this.checkAlreadyLoggedIn()))
                this.logUserOut(false);

    }
    catch (Exception ex)
    {

    }
}

protected void logUserOut(bool redirect)
{
    if (this.Session["gs_sessionId"] != null)
    {
        this.Session["gs_sessionId"] = null;
        this.Session.Abandon();
        Response.Cookies["gsc_sessionId"].Expires = DateTime.MinValue;
        Response.Cookies["gsc_sessionId"].Value = "";
        if (redirect)
            Response.Redirect("Default.aspx");
    }
    else
        if (redirect)
            Response.Redirect("Default.aspx");
}
4

0 に答える 0