第三天

Posted xxiaobai

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第三天相关的知识,希望对你有一定的参考价值。

三、Session

1、介绍

  • Http是无状态的协议,也就是它不保存连接的信息,但很多时候,我们需要保存一个HTTP连接的某些信息,这就诞生了一些保存机制。

  • 说到保存,第一个想到的是将信息保存到服务器中,这就是Session,因为用户应该是知道一个HTTP请求的相关参数的,但服务器在这条连接断开后就丢失了这些信息。

  • Session的问题在于每台服务器都需要保存所有的session,当访问量很大时,这是一笔很大的开销,而且让服务器变得难以维护。将所有的session保存到一台服务器进行集中式的管理可以减小开销,但无法解决单点故障的问题。采用分布式的方式,可以解决这两个问题,但又会增加数据查询的成本。

  • 换个思路,让客户端来保存连接的信息,服务器不保存。但是这样的话,会有很大的安全性问题,Session信息是明文的,坏人可以通过伪造Session信息来欺骗服务器,因此,服务器需要有能力来分辨合法和非法的session信息,这就是Token。

  • Token,由Session和签名组成,签名通过密钥和特定的算法得出。当用户通过Token访问服务器时,服务器只需要通过密钥和算法再次计算Session的签名并和token携带的密钥进行比对即可,若相同,Session合法,反之,不合法。

2、小代码片段

    @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";
        }
    }

以上是关于第三天的主要内容,如果未能解决你的问题,请参考以下文章

冲刺阶段 第三天

Beta冲刺-第三天

第二轮冲刺第三天

Beta冲刺 第三天

js 基础第三天(函数)

第三天