标签:因此 方式 set 参数 计算 分布式 第一个 维护 服务器
Http是无状态的协议,也就是它不保存连接的信息,但很多时候,我们需要保存一个HTTP连接的某些信息,这就诞生了一些保存机制。
说到保存,第一个想到的是将信息保存到服务器中,这就是Session,因为用户应该是知道一个HTTP请求的相关参数的,但服务器在这条连接断开后就丢失了这些信息。
Session的问题在于每台服务器都需要保存所有的session,当访问量很大时,这是一笔很大的开销,而且让服务器变得难以维护。将所有的session保存到一台服务器进行集中式的管理可以减小开销,但无法解决单点故障的问题。采用分布式的方式,可以解决这两个问题,但又会增加数据查询的成本。
换个思路,让客户端来保存连接的信息,服务器不保存。但是这样的话,会有很大的安全性问题,Session信息是明文的,坏人可以通过伪造Session信息来欺骗服务器,因此,服务器需要有能力来分辨合法和非法的session信息,这就是Token。
Token,由Session和签名组成,签名通过密钥和特定的算法得出。当用户通过Token访问服务器时,服务器只需要通过密钥和算法再次计算Session的签名并和token携带的密钥进行比对即可,若相同,Session合法,反之,不合法。
@RequestMapping("/login")
public String login(String username, String password, HttpSession session){
int id = 1;
User user = userService.login(new User(id, username, password));
if(user != null){
// if login successfully, add user into session
session.setAttribute("user", user);
return "success";
}
else{
return "failer";
}
}
标签:因此 方式 set 参数 计算 分布式 第一个 维护 服务器
原文地址:https://www.cnblogs.com/xxiaobai/p/13375703.html