笔记单机和分布式应用下的登录校验,session共享,分布式缓存应用

版权声明:版权有就有吧。 https://blog.csdn.net/m0_38044453/article/details/85051275

1、单机tomcat应用登录校验

session保存在浏览器和应用服务器会话之间

用户登录成功,服务端会保证一个session,当然会给客户端一个sessionId。

客户端会把sessionid保存在cookie中,每次请求都会携带这个sessionId。

2、分布式应用中session共享

真实的应用不可能是单节点部署,所以就有个多节点登录session共享的问题需要解决

1)tomcat支持session共享,但是有广播风暴;用户量大的时候,占用资源就越严重,不推荐。

2)使用redis存储token:

    服务端使用UUID生成随机64位或者128位token,让如redis,然后返回给客户端并存储在cookie中,用户每次访问都携带此token,服务端去redis中校验是否有此用户即可。

3、微服务下登录校验解决方案JWT (json wen token)

1、JWT是一个开放标准,它定义了一种用于简洁,自包含的用于通信双方之间以JSON对象的形式安全传递信息的方法。

    JWT可以使用HMAC算法或是RSA的公钥秘钥对进行签名。

    简单来说,就是通过一定规范来生成token,然后可以通过解密算法逆向解密token,这样就可以获取用户信息。

    优点:

扫描二维码关注公众号,回复: 4845138 查看本文章

        1)生产的token可以包含基本信息,比如ID,用户昵称、头像等信息,避免再次查库

        2)存储在客户端,不占用服务端的内存资源

    缺点:

        token是经过base64编码,所以可以解码,因此token加密前的对象不应该包含敏感信息如用户权限、密码等。

2、JWT格式组成 头部、负载、签名

header + payload + signature

头部:主要是描述签名算法

负载:主要描述的是加密对象的信息,如用户的id等,也可以加些规范里面的东西,如iss签发者,exp 过期时间,sub面向的用户

签名:主要是把前面两部分进行加密,防止别人拿到token进行base解密后篡改token

3、关于JWT客户端存储

可以存储在cookie,localstorage和sessionStorage里面

猜你喜欢

转载自blog.csdn.net/m0_38044453/article/details/85051275