cookie session 令牌机制

cookie

	1.特点
		1.浏览器保存少量数据
		2.都是存文本数据
		3.每次访问都会携带 cookie(请求头中)
		
	2.服务器cookie类和浏览器cookie字符串的区别
		1.浏览器的cookie是 "key=value;key=value"的文本
		  而服务器的cookie类是 一个 key,value的数据类型
		  所以,服务器获得浏览器的cookie要用cookie[]接收
		  服务器向浏览器发送cookie,也是浏览器cookie字符串拼接了一个“key=value”
		  
	3.服务器向浏览器发送 cookie的方式
		1.response.addCookie(cookie)
			1.好处:可以设置浏览器cookie字符串的 某一段“key=value”的生存时间
			2.坏处:每次只能add一个 cookie段,当然可以多次调用这个api,达到添加多个cookie段的效果
		2.response.setHeader("set-cookie","key=value;key=value");
			1.好处:一次可以添加多个 cookie段
			2.坏处:不能设置 cookie段的 生存时间
			
	4.浏览器cookie的有效时间
		1.默认:浏览器关闭,cookie字符串中的所有 cookie段都死亡
		注意:会话,是指只要这个浏览器有了这个cookie,除非(把这个浏览器的所有页面(一个页面有多个窗口))
		全部关闭,这个cookie才会消失
		
		2.setMaxAge(int expiry):设置 cookie段的有效时间;秒为单位
			1.expiry > 0 : 指定次cookie段 多少秒后 过期(跟浏览器是否关闭无关)
					 < 0 : 浏览器关闭 此 cookie段过期
					 = 0 : 此cookie段,马上失效(可以修改浏览器cookie段,使它立即失效)
					 
	5.这样更改 浏览器 cookie段的值
		1.后台发送的 cookie段 的key 和浏览器 cookie字符串 的某个 cookie段的key相同,那么会覆盖这个cookie段的 value

	6.一个服务器产生的cookie只能在该服务器下使用(cookie只会发送,从该服务器认识的cookie)

cookie的应用(免输入用户名登录,session也可以用,随便只要理解cookie和session了就行)

	就是将,第一次登入的用户名,放在cookie中,并且设置cookie的 存活时间>0,并且久一点
	这样即使浏览器关闭,cookie也还在,然后前端页面用cookie的值就好了

session(map)

	1.特点:
		1.服务器保存大量数据
		
		2.第一次创建 session(req.getSession()),这一步其实有2步
			1.创建session(map),它的作用域是 一个会话,就是不同请求也行,相当于整个tomcat
			  并且每个session有一个唯一标识 JESSIONID:会话 id ,JESSIONID = id
			
			2.response.setHeader("set-cookie","JID=id")
			
		3.获得session,req.getSesssion().其实有3步
			1.req.getcookies(),然后遍历出 key=JID的cookie
			
			2.key=JID的 cookie,String id = cookie.getValue()
			
			3.拿这个id,和后台的 多个session 的id去比较,找到相同的那个

		4.这就证明,每一个session的 唯一标识 都不会相同

	2.session的生命周期(session的超时指的是客户端2次请求的最大时间间隔)
		1.cookie失效
			这样就再也找不到,对应的 session了
			
		2.session失效
			1.默认超时时间是 30分钟
			
			2.setMaxInactiveInterval(int interval) 设置 Session 的超时时间(以秒为单位)
				1.interval > 0 : 设定 Session 的超时时长。
				2.interval < 0 : 永不超时(极少使用)
				
			3.getMaxInactiveInterval()获取 Session 的超时时间 
			  invalidate() 让当前 Session 会话马上超时无效。
			  
	3.修改 session的 value(他就是map,map.setAttribute(相同的key,不同的value))

	4.session的作用域,是会话级别,即只要这个请求的cookie符合该session就行
	  session是作用域整个服务,一个cookie带着sessionId,req.getSession() 就可以获得对应sessionId的session

令牌机制(session的应用),分三步(有2块令牌,session的令牌只能用一次,可以解决重复提交等问题,前提是令牌得自己规定好)

	1.第一次 访问后台,session先获得并保存令牌
		session.setAttribute("token",token)
		
	2.浏览器携带 令牌,去访问后台
		1.若 浏览器的令牌 和 session的令牌一样
			1.处理请求
			2.session更改 这个令牌
				session.setAttribute("token",随便更改一个)
		2.else 拒绝处理请求
		
	3.当 浏览器再次 带着相同的令牌(表单重复提交),此时两块令牌已经不同了,后面也不会相同,拒绝处理请求
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: CookieSession Token 都是用来在客户端和服务端之间传递信息的工具。 Cookie一个小型文本文件,由浏览器存储在用户的计算机上。Cookie 可以用来存储用户的偏好设置,或者跟踪用户的浏览记录。Cookie 的信息会在用户的浏览器和服务器之间来回传递,因此它可以记录用户的活动状态。 Session Token 是一个用来识别用户的字符串。它通常被存储在服务器端,并且每当用户发起请求时都会附带这个 Session Token。Session Token 用来识别用户的身份,从而可以保存用户的状态信息。 CookieSession Token 的区别在于,Cookie 存储在用户的计算机上,而 Session Token 存储在服务器端。因此,Cookie 可以在用户的多个设备之间共享信息,而 Session Token 只能在单个设备上使用。另外,Cookie 信息可以在用户关闭浏览器后继续保存,而 Session Token 只能在用户的浏览器会话期间使用,一旦用户关闭浏览器就会失效。 ### 回答2: CookieSession和Token是常用于网络应用中的身份验证和状态管理的三种机制Cookie是一种在客户端存储数据的机制。当用户访问一个网站时,服务器会生成一个cookie并通过HTTP响应头中的Set-Cookie字段发送给客户端。客户端会将这个cookie保存在本地,每次访问该网站时都会在HTTP请求头中的Cookie字段中携带该cookie发送给服务器服务器根据携带的cookie识别用户身份,从而实现用户认证和状态管理的功能。 Session是一种在服务器端存储数据的机制。当用户第一次访问一个网站时,服务器会为该用户创建一个唯一的session,并在服务器端存储该session对应的数据。服务器会生成一个名为sessionID的标识符,并将其通过cookie的方式发送给客户端,客户端保存该cookie。每次客户端访问服务器时,会在HTTP请求头的Cookie字段中携带该sessionID,服务器根据sessionID找到对应的session,并获取相关的数据。 Token是一种在客户端和服务器端之间传递信息的机制。相比于CookieSession,Token更为轻量级且无状态。当用户登录成功后,服务器会生成一个Token并返回给客户端。客户端将Token保存在本地,每次向服务器发送请求时都会在HTTP请求头中携带该Token。服务器验证Token的合法性后,识别用户身份,实现用户认证和状态管理的功能。 总结来说,Cookie是在客户端存储数据的机制Session是在服务器端存储数据的机制,而Token是在客户端和服务器端之间传递信息的机制。它们各有优劣势,在实际应用中可根据需要选择合适的机制来实现身份验证和状态管理。 ### 回答3: CookieSession和Token都是用来维持Web应用程序的用户状态的工具,但它们之间有一些不同点。 1. Cookiecookie):是一种在客户端保存会话状态的机制服务器通过在响应头中设置Set-Cookie字段,将包含用户信息的cookie发送给客户端,客户端会自动将该cookie保存在本地。下次用户再次访问该网站时,客户端会自动在请求头中将该cookie发送给服务器进行验证。Cookie通常用于维持用户的登录状态、个性化设置等。 2. Session(会话):是一种在服务器端保存会话状态的机制服务器在用户第一次访问网站时生成一个唯一的session ID,并将该ID返回给客户端。客户端在以后的请求中通过在请求头中携带该session ID来维持会话。服务器通过session ID来检索保存在服务器端的用户信息,从而实现用户状态的管理。Session通常用于敏感信息的存储(如用户密码)以及用户跟踪等。 3. Token(令牌):是一种用于身份验证和授权的机制。当用户成功登录后,服务器会生成一个加密的令牌,将其返回给客户端。客户端在以后的请求中携带该令牌,在每次请求前都要经过服务器的验证。与CookieSession不同,Token不需要在服务器端保存任何用户信息,服务器只需通过解密Token来验证用户的身份和权限,从而实现跨越多个服务的认证和授权。 总的来说,Cookie是在客户端中保存状态的机制Session是在服务器端保存状态的机制,而Token是一种便于跨服务认证和授权的机制

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值