Session和Cookie的区别与实际应用——分别以保持用户状态和记住密码功能举例

原创 2018年04月17日 16:59:49

一、Session和Cookie的连续与区别

1.session保存在服务器端,cookie保存在客户端

2.session被默认保存在服务器的一个文件中,也可以被放在文件、数据库甚至内存中

3.session依赖于session id,而session id存在于cookie中——关于这一点,我们可以遍历cookie,会发现一个name="JSESSIONID"的cookie——也就是说,session实际上依赖于cookie,如果cookie被浏览器禁用了,那么session也就不能用了。


二、Session实现保持用户状态

  用户登录后,在页面之间传递user信息显然是很麻烦的,总不能每次切换页面时都携带一个user的数据项吧,这个时候我们用session来实现。

  实现很简单:

  首先保存用户信息至session:

request.getSession().setAttribute("user", user);//登录成功,向session中存入user信息

  然后在切换页面时获取session中保存的用户信息,交给新页面:

HttpSession session = request.getSession();
if(session != null && session.getAttribute("user")!=null) {
	view.addObject("user", (User)session.getAttribute("user"));
}else {//未登录}

三、Cookie记住账户信息,自动填充登录信息

  上面我们实现了通过session保存用户登录状态,那么,如何实现非常常见的“记住密码”功能呢?

   显然这里有两种方式:1.使用session,优点是安全,缺点是会话结束后这个用户信息就丢失了。2.使用cookie,优点是可以设置过期时限,缺点是不安全。

   这里我只使用cookie保存用户id,用户请求打开登录界面时,服务端根据这个id从数据库获得整个user,这样不会泄露更多信息,造成安全问题。

   实现同样很简单:

   首先是保存登录信息:

String rememberPassword = request.getParameter("rememberPassword");
//用户信息正确时,保存密码至Cookie
if(rememberPassword!=null && rememberPassword.equals("on")) {
	Cookie cookie = new Cookie("user_id", user.getId()+"");
	cookie.setMaxAge(7*24*60*60);//cookie时限,单位是s;
	response.addCookie(cookie);//将用户id添加至cookie
}

  然后在处理用户打开登录界面请求时,使用这个cookie:

@RequestMapping(path="/toLogin",method= {RequestMethod.GET})
public ModelAndView toLogin(HttpServletRequest request,HttpServletResponse response) {
	ModelAndView view = new ModelAndView("user/login");
	Cookie[] cookies = request.getCookies();
	for(Cookie c : cookies) {
		if(c.getName().equals("user_id")) {
			int id = Integer.parseInt(c.getValue());
			User user = userService.getUserById(id);
			if(user!=null) {
				view.addObject("user", user);
			}
		}
	}
	return view;
}

  现在,界面user/login.html拿到了user的信息,然后填充登录信息:

  (注意我这里用的thymeleaf模板引擎,用jsp或者其他技术的使用自己的语法即可)

<script th:inline="javascript">
$(document).ready(function(){
	var email = [[${user.email}]];
	if(email!=null){
		if(email!=""){
			document.getElementById("email").value=email;
			document.getElementById("password").value=[[${user.password}]];
			document.getElementById("rememberPassword").checked=true;
		}
	}
});
</script>

   最后强调一点,session的生命周期是从会话开始到会话结束,而cookie的生命周期是自己设置的,如果不设置,默认浏览器关闭这个cookie就没了,所以最好设置一下期限。 

   ok,关于session和cookie的知识就讲到这里。



   


版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_28379809/article/details/79976959

php中的session cookie 记住密码基本原理 浏览器退出登录后保持状态

1.sql语句: create database demo; DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ( `username` var...
  • u010703523
  • u010703523
  • 2015-03-26 18:49:13
  • 2064

[JavaScript] session、cookie与“记住我的登录状态”的功能的实现

Cookie的机制      Cookie是浏览器(User Agent)访问一些网站后,这些网站存放在客户端的一组数据,用于使网站等跟踪用户,实现用户自定义功能。      Cookie的Dom...
  • luotangsha
  • luotangsha
  • 2011-08-25 00:17:05
  • 4480

Session和Cookie的应用场景和区别

一、cookie机制和session机制的区别 ***************************************************************************...
  • u011145904
  • u011145904
  • 2017-08-31 14:06:36
  • 1697

[转载]cookie和session的区别和应用场景

区别和联系:     Cookies是属于Session对象的一种。但有不同,Cookies不会占服务器资源,是存在客服端内存或者一个cookie的文本文件中;而“Session”则会占用服务器资源。...
  • GuoZicheng00
  • GuoZicheng00
  • 2015-12-06 22:53:29
  • 1483

PHP 使用cookie实现记住登录状态

php使用cookie实现记住登录状态,本文用最原始的方法讲解如何实现记住登录状态,给出3个步骤和具体实现代码,需要的朋友可以参考下。 要实现记住密码自动登录的功能,我们大多数据都是利用了客户端的c...
  • u011781769
  • u011781769
  • 2015-09-15 17:34:08
  • 3098

[Java开发] cookie、session及实现记住密码,自动登录思路

在登录帐号、密码框下,有三种帐号登录模式可供选择,用户可根据自己的具体情况选择其中一种适合自己的模式。                                          1、网吧...
  • a137268431
  • a137268431
  • 2015-09-17 11:27:39
  • 2857

记住登录状态的安全做法

永久登录指的是在浏览器会话间进行持续验证的机制。换句话说,今天已登录的用户明天依然是处于登录状态,即使在多次访问之间的用户会话过期的情况下也是这样。永久登录的存在降低了你的验证机制的安全性,但它增加了...
  • cuijinquan
  • cuijinquan
  • 2014-01-16 10:09:58
  • 2754

使用cookie保存用户的登录状态——初步实现

保存用户的登录状态是许多网站都会使用,一般会使用session、数据库或者cookie和session相结合的办法,这里我们了解 cookie的方法来保存用户登录状态. Cookie 是在 HTT...
  • Chation_99
  • Chation_99
  • 2017-01-09 14:29:10
  • 9388

ASP.NET使用Cookie简单实现记住登陆状态功能

页面代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15...
  • u011893634
  • u011893634
  • 2015-01-15 09:27:48
  • 1738

php用户登录代码session、cookie自动记忆功能

在用户登录时有很多种有我实例一样的最基本的用户登录跑到指定页面这个不安全如果用户知道你这个地址就不需要登录了,实例二利用了session也是较常用的在操作页面加了session验证,但是无法记住下次登...
  • wilimaster
  • wilimaster
  • 2016-08-31 00:44:20
  • 2620
收藏助手
不良信息举报
您举报文章:Session和Cookie的区别与实际应用——分别以保持用户状态和记住密码功能举例
举报原因:
原因补充:

(最多只允许输入30个字)