- 畅销套餐
- 精选套餐
- 人气套餐
- 尊享套餐
- 高薪套餐
- 课程介绍
- 课程大纲
适合人群:
有一定基础的 Go 语言初学者; 有一定编程经验的 Go 程序员, 寻求在 Java 中寻找业务灵感; Java 转 Go 程序员, 需要项目练手; 对于有状态登录业务场景有明确需求的同学.
你将会学到:
你将掌握 Sa-Token 的核心原理和方法, 并能够使用 Go 语言进行实现.
- 掌握有状态登录的核心原理, 补齐登录和鉴权相关业务知识盲区
- 学会阅读 Java 源码, 并使用 Go 语言进行实现
- 学会编写 Go 语言测试, 并体会测试对于开发工作的提升
- 学会 Redlock 分布式锁的使用, 深刻理解如何实现分布式并发安全
- 学会如何实现缓存接口方法的原子性
课程简介:
Sa-Tokne 简介
Sa-Token 是国人编写的 Java 轻量级权限认证框架, Github 16k stars,Gitee 46k stars, 同时也是 Gitee GVP 项目.
项目地址: https://gitee.com/dromara/sa-token
已经有一些开源项目使用或改用了 Sa-Token, 未来可能会更多. ( 如果你在别处看到 Sa-Token 有坑而犹豫, 本课程提供的 Go 语言实现版已经修复了并发安全的问题)
Go 语言认证和鉴权现状
Go 语言 Web 后端项目基本使用 JWT 进行认证, 自研或使用 Casbin 进行鉴权, 因为缺乏统一的标准, 所以在实现上往往有很大的差异. 一方面给源码阅读带来了困难 (即使不算很复杂的业务), 另一方面也不利于去把握认证和鉴权业务的核心 (知识不成体系化).
如果能够学习和借鉴老牌后端开发语言 Java 在认证和鉴权这部分业务的理解和实现, 对于 Go 程序员提升对于认证和鉴权业务的理解非常有帮助. 考虑到项目代码的规模和实现的难度, 所以选择 Sa-Token 作为突破口, 进行专项学习.
Go 语言实现版 Stoken 的功能和方法
Stoken 功能展示
Stoken 核心原理
不涉及复杂算法, 仅仅是通过操作缓存中的 key/value 和 Session 实现认证鉴权功能.
Stoken 项目结构
学完本课程你将会获得什么?
补齐有状态登录的知识盲区,完善认证鉴权相关业务知识体系.
掌握 Sa-Token 的核心原理, 实现 Sa-Token 核心功能.
能够阅读 Java 代码, 并用 Go 语言实现, 尤其对于 Web 后端 Go 程序员是很好的加分项, 本课程算是一个不错的开始和尝试.
掌握如何写 Go 语言单元测试.
适用于哪些同学?
Go 语言初学者, 厌倦了入门项目, 想要学习真正的实战项目.
Java 转 Go 的同学, 对照 Java 源码进行 Go 编程, 实现知识迁移, 快速学习.
对于有状态登录的业务场景有需求的同学 (强注销, 单端登录, 多端登录等...).
有经验的 Go 程序员, 寻求在 Java 中获得业务灵感, 但是无法绕开登录鉴权相关业务逻辑.
学这门课需要的技术基础
了解 Go 语言基础知识.
了解 Redis 字符串类型相关命令: GET, SET, TTL, EXPIRE.
了解 Gin 的基础使用 (仅在适配接口和示例展示中使用).
Stoken 实现了什么
使用 Go 语言实现了 Sa-Token 的登录和鉴权的核心功能, 并配以测试代码, 确保功能的正确性.
通过增加分布式锁和删除部分非必要功能, 实现了 Sa-Token 的并发安全, 原 Sa-Token 代码可能存在一定的并发安全问题.
Stoken 没有实现什么
Sa-Token 微服务部分没有实现
当前版本教程不支持 JWT 和 OAuth2, 之后会更新支持 (2024年12月份之前)
课程更新频率
1. 跟随 Sa-Token 大版本更新 (如果 Sa-Token 对核心功能进行了更新).
2. 根据学员反馈的 bug 或者其他问题进行更新.
教学方式
左侧 Java 源码, 右侧 Go 语言实现, 先简单过一下 Java 源码, 然后从零开始进行 Go 语言实现. 本课程强调要写代码, 主打沉浸式编程.
学习编程的核心是初期多写代码, 一定要写出手感. Stoken 项目总代码量约 3400 行, 约 1900 行左右功能实现, 1500 行左右测试代码.
环境准备
Windows 下个人强烈推荐安装 WSL: 安装 WSL | Microsoft Learn
VSCode: 在 Windows 安装
Java 环境: Java8 ~ Java21 均可
Go 环境: 需要 GO 1.22.5 (redlock 和 slog 需要高版本)
Redis 实例: Redis 版本 6.0 以上
apifox: 用作 Gin 示例的测试, 注册需要手机号, 如果在意个人隐私, 可以考虑其他测试软件, 不影响课程本身
课程答疑
扫码加课程答疑群, 课程答疑, Bug反馈等.
常见问题:
问:没有基础可以学吗?
答:完全没有 Go 语言基础学习本课程有点困难, 建议先自学一下 Go 语言, 掌握 Go 语言的基础知识.
问:多久可以学完?
答:本课程长度 31 小时左右, 在学习完成之后, 个人建议要自己参照 Java 源码再实现一遍, 以提升自己的 Go 语言编程水平.
问:课程学完后能到什么水平?
答:因为是专项课程, 本课程的主要目标是补齐 Go 程序员在登录鉴权业务理解方面的短板, 掌握 Sa-Token 核心原理确实可以在一些场合成为很好的谈资 (比如面试, 比如评职级)
课程大纲-Go专项实战: 使用 Go 实现轻量级 Java 权限认证框架 Sa-Token