分布式session的应用

    在登录案例中,为了防止用户重复登录,通常我们会将用户信息存在cookie或者session中,这种做法在服务器为一台时自然没问题,可如果服务器为多台时,如何使别的服务器知道用户是否登录呢?

    这里就需要引入分布式session的概念:

    首先将用户登录信息存入第三方存储(redis)中,然后将这个登录信息返回到浏览器,用户每次访问时,都会携带这个登录信息 token,这时服务器拿到请求后会从redis中获取该用户的登录信息 token,并与浏览器携带的token进行比对,进而就得到用户是否以登录。

    我们代码实现一下:

1.登录时设置一个token返回个浏览器

后端代码

2.将token存在浏览器的localstorage 浏览器任意页面都可以拿到这个数据

前端代码

3.设置axios的请求和响应拦截器

   请求拦截器: 在每次发送异步请求时都从localstorage中获取token,并将其设置在请求头里

请求拦截器

    响应拦截器: 每次响应前判断响应flag是否为false,如果未登录,跳转登录页面   

响应拦截器

将以上两个拦截器添加到一个js文件中,以后要用只要导入js即可;

4. 在请求到达controller时,先拿到请求头的token,在根据token从redis中查询是否有这个对象,没有直接返回登录页面;


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容