htmljqueryajaxauthentication

How to enable remember password in case of AJAX login?


I have a web app where I have a simple login box. There is no form to submit and the login procedure is implemented via jQuery AJAX.

In such a scenario, how can I make the web browser display the dialog:

"Do you want the browser to remember the password?"

NOTE: I'm looking for a solution that works at least in the most recent version of all major browsers.

EDIT: I do use cookies for remembering user login. The problem is that browsers don't offer to remember the password.

Here is the HTML:

<div class="window loginWindow sn-login">
    <div>
        <input type="text" id="UserName" placeholder='Username' />
    </div>
    <div>
        <input type="password" id="Password" placeholder='Password' />
    </div>
    <div>
        <div>
            <input type="checkbox" id="RememberMe" />
            <label for="RememberMe">Remember my login</label>
        </div>
        <div>
            <button class="loginSubmit">Login</button>
        </div>
    </div>
</div>

Here is the JavaScript:

var $userName = $("#UserName"),
    $rememberMe = $("#RememberMe"),
    $password = $("#Password");

var name = $userName.val(), pw = $password.val();
$.ajax({
    type: "POST",
    url: "/UserActions/LogIn",
    dataType: "json",
    data: { password: pw, email: name },
    success: function (data) {
        if (data.success) {
            if ($rememberMe.is(":checked")) {
                // Omitted for brevity
            }

            window.location.reload();
        }
        else {
            // Omitted for brevity
        }
    }
});

Solution

  • Just create a form element as a wrapper for your controls and use the form's submit handler to perform a ajax call as you are doing.

    <form id="myform">
    <div class="window loginWindow sn-login">
        <div>
            <input type="text" id="UserName" placeholder='Username' />
        </div>
        <div>
            <input type="password" id="Password" placeholder='Password' />
        </div>
        <div>
            <div>
                <input type="checkbox" id="RememberMe" />
                <label for="RememberMe">Remember my login</label>
            </div>
            <div>
                <button class="loginSubmit">Login</button>
            </div>
        </div>
    </div>
    </form>
    

    Change your script like this:

    $('.loginSubmit').on('click', function(){
    
    $("#myform").submit(function(){
    
    
    var $userName = $("#UserName"),
        $rememberMe = $("#RememberMe"),
        $password = $("#Password");
    
    var name = $userName.val(), pw = $password.val();
    $.ajax({
        type: "POST",
        url: "/UserActions/LogIn",
        dataType: "json",
        data: { password: pw, email: name },
        success: function (data) {
            if (data.success) {
                if ($rememberMe.is(":checked")) {
                    // Omitted for brevity
                }
    
                window.location.reload();
            }
            else {
                // Omitted for brevity
            }
        }
    });
    return false;
    });
    
    });