ad
close

Go专项实战: 使用 Go 实现轻量级 Java 权限认证框架 Sa-Token

你将掌握 Sa-Token 的核心原理和方法, 并能够使用 Go 语言进行实现.

92人学习

中级47课时2024/08/12更新

二维码下载学堂APP缓存视频离线看

向阳
  • 畅销套餐
  • 精选套餐
  • 人气套餐
  • 尊享套餐
  • 高薪套餐
  • 课程介绍
  • 课程大纲

适合人群:

有一定基础的 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 语言实现版已经修复了并发安全的问题)

sa-token.png


Go 语言认证和鉴权现状

go-jwt.png


Go 语言 Web 后端项目基本使用 JWT 进行认证, 自研或使用 Casbin 进行鉴权, 因为缺乏统一的标准, 所以在实现上往往有很大的差异. 一方面给源码阅读带来了困难 (即使不算很复杂的业务), 另一方面也不利于去把握认证和鉴权业务的核心 (知识不成体系化).


如果能够学习和借鉴老牌后端开发语言 Java 在认证和鉴权这部分业务的理解和实现, 对于 Go 程序员提升对于认证和鉴权业务的理解非常有帮助. 考虑到项目代码的规模和实现的难度, 所以选择 Sa-Token 作为突破口, 进行专项学习.


Go 语言实现版 Stoken 的功能和方法

stoken.png



Stoken 功能展示

image.png

image.png


Stoken 核心原理


stoken基本原理.png

不涉及复杂算法, 仅仅是通过操作缓存中的 key/value 和 Session 实现认证鉴权功能.


Stoken 项目结构

image.png

学完本课程你将会获得什么?

  1. 补齐有状态登录的知识盲区,完善认证鉴权相关业务知识体系.

  2. 掌握 Sa-Token 的核心原理, 实现 Sa-Token 核心功能.

  3. 能够阅读 Java 代码, 并用 Go 语言实现, 尤其对于 Web 后端 Go 程序员是很好的加分项, 本课程算是一个不错的开始和尝试.

  4. 掌握如何写 Go 语言单元测试.


适用于哪些同学?

  1. Go 语言初学者, 厌倦了入门项目, 想要学习真正的实战项目.

  2. Java 转 Go 的同学, 对照 Java 源码进行 Go 编程, 实现知识迁移, 快速学习.

  3. 对于有状态登录的业务场景有需求的同学 (强注销, 单端登录, 多端登录等...).

  4. 有经验的 Go 程序员, 寻求在 Java 中获得业务灵感, 但是无法绕开登录鉴权相关业务逻辑.


学这门课需要的技术基础

  1. 了解 Go 语言基础知识.

  2. 了解 Redis 字符串类型相关命令: GET, SET, TTL, EXPIRE.

  3. 了解 Gin 的基础使用 (仅在适配接口和示例展示中使用).

Stoken 实现了什么

  1. 使用 Go 语言实现了 Sa-Token 的登录和鉴权的核心功能, 并配以测试代码, 确保功能的正确性.

  2. 通过增加分布式锁和删除部分非必要功能, 实现了 Sa-Token 的并发安全, 原 Sa-Token 代码可能存在一定的并发安全问题.

Stoken 没有实现什么

  1. Sa-Token 微服务部分没有实现

  2. 当前版本教程不支持 JWT 和 OAuth2, 之后会更新支持 (2024年12月份之前)


课程更新频率

1. 跟随 Sa-Token 大版本更新 (如果 Sa-Token 对核心功能进行了更新).

2. 根据学员反馈的 bug 或者其他问题进行更新.


教学方式

教学方式.png

左侧 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反馈等.

微信群.png



常见问题:

问:没有基础可以学吗?

答:完全没有 Go 语言基础学习本课程有点困难, 建议先自学一下 Go 语言, 掌握 Go 语言的基础知识.

问:多久可以学完?

答:本课程长度 31 小时左右, 在学习完成之后, 个人建议要自己参照 Java 源码再实现一遍, 以提升自己的 Go 语言编程水平.

问:课程学完后能到什么水平?

答:因为是专项课程, 本课程的主要目标是补齐 Go 程序员在登录鉴权业务理解方面的短板, 掌握 Sa-Token 核心原理确实可以在一些场合成为很好的谈资 (比如面试, 比如评职级)

展开更多
close
  • 课程介绍
  • 课程大纲
在线
客服
APP
下载

下载Android客户端

下载iphone 客户端

官方
微信

关注官方微信

返回
顶部