0
点赞
收藏
分享

微信扫一扫

java记住功能-themeleaf版本

Jonescy 2022-01-26 阅读 77

在这里插入图片描述

第一步在密码框下面加上记住密码选择框

<li>
	<label for="rememberme">
		<input name="rememberme" type="checkbox" id="rememberme" value="1" checked /> 记住密码
	</label>
</li>

我是ajax方式而不是form表单,所以需要手动加上rememberme参数,并且要传递checked属性。

function login() {
    var account = $("input[name='account']").val();
    var password = $("input[name='password']").val();
    var rememberme = $("input[name='rememberme']").get(0).checked;
    $.ajax({
        type: "post",
        url: "/login",
        data: {
            "account": account,
            "password": password,
            "rememberme": rememberme
        },
	......

第二步在controller的方法中添加cookie

//添加cookie
if (rememberme.equals("true")) {
	//创建两个Cookie对象
	Cookie nameCookie = new Cookie("account", account);
	//设置Cookie的有效期为3天
	nameCookie.setMaxAge(60 * 60 * 24 * 3);
	Cookie pwdCookie = new Cookie("password", password);
	pwdCookie.setMaxAge(60 * 60 * 24 * 3);
	response.addCookie(nameCookie);
	response.addCookie(pwdCookie);
}

上面代码中给response添加了账号密码两个cookie。

第三步显示账号密码

当我们登录后又退出时,cookie还存储着账号密码,就可以把账号密码显示到输入框,达到记住密码的效果。

使用js来获取cookie

//获取cookie
function getCookie(cname) {
    var name = cname + "=";
    var ca = document.cookie.split(';');
    for(var i=0; i<ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1);
        if (c.indexOf(name) != -1) return c.substring(name.length, c.length);
    }
    return "";
}

调用上述js来填充输入框

$(function () {
    //记住密码功能
    var account = getCookie("account");
    var password = getCookie("password");
    //自动填充用户名和密码
    $("input[name='account']").val(account)
    $("input[name='password']").val(password)
});

第四步取消勾选记住密码后清除cookie

js方法定义

//设置cookie
function setCookie(cname, cvalue, exdays) {
    var d = new Date();
    d.setTime(d.getTime() + (exdays*24*60*60*1000));
    var expires = "expires="+d.toUTCString();
    document.cookie = cname + "=" + cvalue + "; " + expires;
}

// 删除cookie
function clearCookie(name) {
    setCookie(name, "", -1);
}

登录时候判断是否勾选,没勾选的话就清除

var account = $("input[name='account']").val();
var password = $("input[name='password']").val();
var rememberme = $("input[name='rememberme']").get(0).checked;
if (! rememberme) {
	clearCookie("account");
	clearCookie("password");
}
举报

相关推荐

0 条评论