Redis作为一种定义为高级key-value缓存,在存取时间短的情况下搭建的NoSQL,是存储持久化的信息的最佳选择,有着高可用性、快速响应时间等特点。而JSON Web token(JWT)是用于在客户端和服务器之间传输信息的应用程序的标准,由于其核心的几大特性(独立性,无状态性,易扩展性,安全性),JWT在Web开发和RESTful架构中越发普及。
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名与空间、网站空间、营销软件、网站建设、西工网站维护、网站推广。
基于Redis集群来实现JWT具有一定的突出优势,一方面Redis可以实现极高的性能和提供高可用性,并且Redis集群可以实现check-out token,从而避免令牌因概率超时而被删除;另一方面,Redis集群提供了原子性,能够保证多线程访问和有序性,从而避免出现数据库存储token出现交叉添加等问题,而且Redis的存储方式也极大的减少了数据库的负载存储压力。
实现JWT基于Redis集群一般采用labstack/echo框架,下面是针对echo框架实现JWT基于Redis集群的代码实现:
// 注册JWT中间件
e := echo.New()
config := jwt.JWTConfig{
SigningKey: “justforTesting”, //secret秘钥
SigningMethod: “HS256”, //jwt签名方法
Done: doneFunc,
}
e.Use(jwt.JWTWithConfig(config))
// 将token缓存到Redis集群
redisConn,ERR := redis.NewClusterClient(&redis.ClusterOptions{
Addrs: []string{“host:7777″,”host2:7777”},
Password “password”,
})
// 添加token实现
func doneFunc (clms jwt.Clms) error {
token, err := jwt.GenerateToken(clms)
if err != nil {
return err
}
jwt.StoreToken(token, clms, redisConn) // stores the token in redis
return nil
}
// 验证token
func validateFunc (token string) (jwt.Clms, error) {
clms, err := jwt.ParseToken(token, redisConn)
if err != nil {
return jwt.Clms{}, err
}
return clms, nil
}
上述就是基于Redis集群实现JWT的过程,使用Redis集群可以极大加快token验证的处理速度,而且具有较高的可用性,可以在多伺服端机器上保证token处理的连续性。
成都网站设计制作选创新互联,专业网站建设公司。
成都创新互联10余年专注成都高端网站建设定制开发服务,为客户提供专业的成都网站制作,成都网页设计,成都网站设计服务;成都创新互联服务内容包含成都网站建设,小程序开发,营销网站建设,网站改版,服务器托管租用等互联网服务。
名称栏目:基于Redis集群的JWT实现方案(redis集群jwt)
文章URL:http://www.shufengxianlan.com/qtweb/news9/237359.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联