前言

由于我既对接过session、cookie,也对接过JWT,今年由于工作需求也对接了gtoken的2个版别,对这方面的理解还算深入。

尤其是看到官方文档谈论区又小伙伴表明看不懂,所以做了这期视频内容出来:

【视频+源码】登录鉴权的三种方式:token、jwt、session实战分享

内容提要:

  1. 结合商业项目需求集成gtoken
  2. gtoken缓存模式gcache和gredis运用比照
  3. 登录鉴权后将用户信息赋值到context,供后续链路调用
  4. 自定义登录、登出、权限验证办法,各个办法别离写什么事务逻辑合适

视频教程

视频在这里:本期内容对应B站的开源视频

源码共享

由于涉及的知识点比较多,视频内容比较长。

假如你觉得看视频浪费时刻,能够直接阅读源码:

  • goframe v2版别集成gtoken

    • 分支:main
  • goframe v1版别集成gtoken

    • 分支:main
  • goframe v2版别集成jwt

    • 分支:l10_登录鉴权_jwt_自定义中间件
  • goframe v2版别session登录

    • 分支:l09_登录鉴权_session
  • 官方调用示例文档

根本介绍

jwt和session的对接教程之前共享过,不作为这期内容的重点。如有需求能够私信我。

这期重点介绍Gtoken的对接:

Gtoken是根据GoFrame框架的token插件,经过服务端验证方法完成token认证;已彻底能够支撑线上token认证,经过Redis支撑集群模式;

  • github地址:github.com/goflyfox/gt…
  • gitee地址:gitee.com/goflyfox/gt…

注意问题: 全面适配GoFrame v2.0.0 ; GoFrame v1.X.X 请运用gtoken v1.4.X相关版别。

gtoken优势

  1. gtoken支撑单点应用运用内存存储,也支撑集群运用redis存储;彻底适用于企业出产级运用;
  2. 有用的防止了jwt服务端无法退出问题;
  3. 处理jwt无法报废已公布的令牌,只能比及令牌过期问题;
  4. 经过用户扩展信息存储在服务端,有用规避了jwt带着大量用户扩展信息导致降低传输效率问题;
  5. 有用防止jwt需求客户端完成续签功用,添加客户端复杂度;支撑服务端主动续期,客户端不需求关心续签逻辑;

特性说明

  1. 支撑token认证,不强依赖于session和cookie,适用jwt和session认证一切场景;
  2. 支撑单机gcache和集群gredis模式;
# 缓存模式 1 gcache 2 gredis 3 fileCache
CacheMode = 2
支撑服务端缓存主动续期功用
// 注:经过MaxRefresh,默许当用户第五天拜访时,主动续期
// 超时时刻 默许10天
Timeout int
// 缓存改写时刻 默许为超时时刻的一半
MaxRefresh int
  1. 支撑分组阻拦、大局阻拦、深度途径阻拦,便于根据个人需求定制阻拦器;建议运用分组阻拦方法;
  2. 框架运用简单,只需求设置登录验证办法以及登录、登出途径即可;
  3. gtoken v1.4.0版别开端支撑分组中间件方法完成,但依然兼容大局和深度中间件完成方法;

比照JWT

  1. 比较于JWT,Gtoken最大的特点是“有状况”
  2. 另外一个特点是不需求客户端改写token,而是服务端主动改写token的过期时刻

大家结合自己的场景去运用,不要刻意去追求“无状况”或者“有状况”。能处理自己实际问题的才是好插件:

【视频+源码】登录鉴权的三种方式:token、jwt、session实战分享

上图红框,是插件作者在官方文档谈论区的解答。

延伸

之前共享jwt和gtoken文章的时分,和群里的一位大佬探讨过。

假如你在登录鉴权方面有很高的要求,比如要和灰产斗智斗勇,那么建议你自己深入了解OAuth原理

在这里也引荐一个很不错的开源项目:

github.com/ego-compone…

好了,这期内容就到这里,感谢大家的观看,欢迎点赞支撑。

【视频+源码】登录鉴权的三种方式:token、jwt、session实战分享

一同学习

咱们搞了一个高质量的技术交流群,欢迎加入咱们一同学习:私信我

微信号:wangzhongyang1993 公众号:程序员升职加薪之旅 B站视频:王中阳Go

本文正在参与「金石方案 . 瓜分6万现金大奖」