码迷,mamicode.com
首页 > 其他好文 > 详细

第三天

时间:2020-07-25 11:37:39      阅读:66      评论:0      收藏:0      [点我收藏+]

标签:因此   方式   set   参数   计算   分布式   第一个   维护   服务器   

三、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";
        }
    }

第三天

标签:因此   方式   set   参数   计算   分布式   第一个   维护   服务器   

原文地址:https://www.cnblogs.com/xxiaobai/p/13375703.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!