6.21笔记(Token,session,cookie)
1L是什么意思?
java中经常会碰到“long c = 1L”的写法,L表示long ,long占用8个字节,表示范围:-9223372036854775808 ~ 9223372036854775807
1L其实就是1。
常量后面跟这个一般是指类型,1L表示1是长整型,如果是1f 表示是float型
登录令牌Taken
首次登录成功后,会生成一个一串加密的字符串。这个字符串就是客户端进行发送登录请求的令牌。当第一次登录成功后,服务器就生产了一个taken(本地存储)并返回给客户端。登录成功之后在指定时间范围之内,直接用taken进行登录即可,无需输入用户名和密码
其中在taken的生命周期内,每次客户端发送请求时taken都在请求的头部中
特征:
-
无状态,可拓展:
如果存到session中,用户每次想登录都要去已验证的服务器发送验证信息,可能会造成拥堵。而使用token后,直接在客户端存储验证信息,就减轻了服务器的压力。token可以创建和其他程序共享的程序(Facebook和Twitter联系起来)
-
支持移动设备:
-
跨程序调用
可以介入到各种设备和应用程序,只要用户有一个通过了验证的token,数据和资源就会在任何域上被请求到
-
安全
JWT
全称json web token 。它把用户的信息加密到token中,服务器中不存储用户的信息。服务值只需要生成一个密钥,每一次验证这个密钥即可
<dependency>
<groupId>com.auth0</groupId>
<artifactId>java-jwt</artifactId>
<version>3.4.0</version>
</dependency>
使用:
D:\java_project\cqoa\ruoyi-framework\src\main\java\com\ruoyi\framework\web\service\TokenService.java
Token
是身份的验证方法,用户在登录成功后回生成一个token,下次登录时浏览器直接识别这个token的值即可判断是否符合登录条件
Cookie
是由服务器发送给客户端的特殊信息,浏览器会把cookie保存到本地目录的文本下。下一次请求同一个网站会把这个cookie发给服务器。
作用:cookie的目的就是存储web的状态信息
session:
代表服务器和浏览器的会话过程,session是由服务器生成的,一般存储在服务器的内存,缓存和硬盘上。当关闭浏览器(结束一次会话)后session就会失效
token和cookie的比较
token:服务器直接看Token以判断是否可以登录,无需判断验证身份信息
cookie:不仅具有登录验证的功能,在之后的任何操作,只要向服务器初始cookie,服务器就可以识别到当前用户所有的相关身份信息
session和cookie的比较
-
cookie存放在客户端本地,session存放在服务端
-
cookie只能保管ASCII字符串,否则要进行编码处理
session可以保存任何类型的数据,使用方便
-
由于cookie存在本地,就可能会发生用户安全问题,所以用户密码等敏感信息不要放在cookie中
session时放在服务器上的,里面的任何隐私信息都能得到有效的保护
-
cookie的有效期一般很长
session在关闭会话后就会失效
-
cookie是放在客户端本地的,所以对服务器不造成压力影响
session是存储在服务器上的,放并发访问用户十分多使,会产生非常多的session,就消耗了很多的内存
HttpServletRequest
HttpServletRequest代表客户端的请求,当客户端通过http进行访问服务器时,http请求都封装到这个对象中。
getRequestURL:返回客户端发出请求时的完整的url
getHeader(string string):以string的形式返回请求头部的值,如果含有多个头部相同的头部,值返回第一次出现的头