使用Cookie实现记住密码,并且密码加密

Cookie实现记住密码

做项目的时候,会有登录功能,就会有一个记住我的功能,我们常常选择使用Cookie来存信息。

为什么用Cookie呢?
1.HTTP协议是无状态的,服务器无法记录用户上一次的操作,这样就造成了交互上的阻碍。而Cookie就可以做到绕开HTTP的无状态。服务器借由从Cookie中读取包含的信息,借以维护用户和服务器会话中的状态。
2.Cookie缓存的信息是存到你的硬盘上的,而且你电脑关机也不会造成数据的丢失,最重要的是,你可以设置Cookie的保存时间,从建立Cookie开始,经过这么久,它就会销毁.

  1. 登录的界面代码 login.html
<div class="form_input clearfix">
	<form>
		<ul>
			<li>
				<input type="text" name="nickname" class="name_input" id="nickname" placeholder="请输入用户名" id="nickname">
			</li>
			<li>
				<input type="password" name="pwd" class="pwd_input" id="pwd" placeholder="请输入密码" id="pwd">
			</li>
			<li>
				<div class="more_input clearfix">
					<input type="checkbox" checked id="remember">
					<label for="remember" >记住我</label>
				</div>
			</li>
			<li>
			<input type="button" value="登录" class="submit_input" onclick = "login()">
			</li>
		</ul>
	</form>
</div>
  1. login.js:判断是否要存cookie,使用MD5对密码进行加密。使用md5加密解密需要用到两个js文件.md5加密解密js文件
    分两步:
    (1)点击登录的时候判断用户是否勾选了记住我复选框,如果选中传一个判断值交给后台处理。
    (2)每次进入到login.html页面,一进入页面之前就要判断,是否有cookie数据,有的话,就取出来。
//模拟登陆
function login(){
	//获取用户名
	var nickname = $("#nickname").val();
	//获取密码
	var pwd = $("#pwd").val();
	
	//传过去一个MD5加密过的密码  便于存cookie
	var md5pwd=$.base64.btoa(encodeURIComponent(pwd));

	//判断是否要使用记住密码和用户名
	var flag=0;
	if($("#remember").prop("checked") ){//选择了记住我
		flag=1;
	}
	
	//发送请求 登录
	$.post("member/login",{nickName:nickname,pwd:pwd,flag:flag,md:md5pwd},function(data){
		data=parseInt($.trim(data));
		if(data>0){//登录成功
			//跳转转网页
			location.href = "member/index";	
		}else{
			alert("用户名或密码错误");
			location.href = "login.html";
		}
	},"text")	
}

//每次一进入到login.html都要进行判断是否有cookie
$(function(){
	//取cookie	
	var str=document.cookie;
	
	var pwd=str.split(";")[0].split("-")[1];
	
	var pwd = decodeURIComponent($.base64.atob(pwd));//解密
	
	$("#nickname").val(str.split(";")[0].split("=")[1].split("-")[0]);
	$("#pwd").val(pwd);
})
  1. 后台存cookie的处理代码:MemberInfoController.java
@Controller
@RequestMapping("/member")
public class MemberInfoController{
	
	@Autowired
	private IMemberInfoBiz memberInfoBiz;
	
	@RequestMapping("/login")
	@ResponseBody
	public int Login(@RequestParam Map<String,Object> map,HttpSession session,HttpServletResponse response) throws UnsupportedEncodingException, NoSuchAlgorithmException{
		int result=-1;
		MemberInfo member=memberInfoBiz.login(map);
		
		if(member!=null){//登陆成功
			// 判断是否要存cookie
			if("1".equals(map.get("flag"))){//说明勾选了记住我
				//获取到用户名和密码
				String loginInfo=map.get("nickName")+"-"+map.get("md");
				//实例化Cookie对象
				Cookie userCookie = new Cookie("LoginInfo",loginInfo);
				//设置编码集
				URLEncoder.encode(loginInfo,"utf-8");
			
				//设置cookie的生命周期   7天
				userCookie.setMaxAge(60*60*24*7);
				
				userCookie.setPath("/");
					
				response.addCookie(userCookie);
			}
			result=1;
		}
			
		return result;
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值