今天给大家介绍一款轻量级 Java 权限认证框架,主打一个优雅集成!
简介
Sa-Token是一个开源软件,可轻轻松松搞定 登录认证、权限认证、分布式Session会话等问题。
该开源项目代码可读性,集成简单,值得学习一番。
功能一览
Sa-Token 目前主要五大功能模块:登录认证、权限认证、单点登录、OAuth2.0、微服务鉴权。列举部分功能如下
-
登录认证 —— 单端登录、多端登录、同端互斥登录、七天内免登录
-
权限认证 —— 权限认证、角色认证、会话二级认证
-
Session会话 —— 全端共享Session、单端独享Session、自定义Session
-
踢人下线 —— 根据账号id踢人下线、根据Token值踢人下线
-
账号封禁 —— 登录封禁、按照业务分类封禁、按照处罚阶梯封禁
-
分布式会话 —— 提供jwt集成、共享数据中心两种分布式会话方案
-
模拟他人账号 —— 实时操作任意用户状态数据
-
同端互斥登录 —— 像QQ一样手机电脑同时在线,但是两个手机上互斥登录
作者还提供一张功能列表图,详情说明了Sa-Token的功能分布,贴在这里供大家参考
img
使用样例
Sa-Token 将程序员的优雅玩到了一定级别,代码令人赏心悦目,以登录认证为例,只需要如下一行代码即可
// 会话登录,参数填登录人的账号id
StpUtil.login(10001);
如果一个接口需要登录后才能访问,依然只需要一行代码
// 校验当前客户端是否已经登录,如果未登录则抛出 `NotLoginException` 异常
StpUtil.checkLogin();
其他场景依旧
-
踢人下线
// 将账号id为 10077 的会话踢下线
StpUtil.kickout(10077);
-
权限认证
// 注解鉴权:只有具备 `user:add` 权限的会话才可以进入方法
@SaCheckPermission("user:add")
public String insert(SysUser user) {
// ...
return "用户增加";
}
Sa-Token使用情况
目前有不少项目,使用了Sa-Token,简单列举如下,可供大家参考,足以说明该系统走在正确的路上
-
[ Snowy ]:国内首个国密前后分离快速开发平台,采用 Vue3 + AntDesignVue3 + Vite + SpringBoot + Mp + HuTool + SaToken。
-
[ RuoYi-Cloud-Plus ]:重写RuoYi-Cloud所有功能 整合 SpringCloudAlibaba Dubbo3.0 Sa-Token Mybatis-Plus MQ OSS ES Xxl-Job Docker 全方位升级 定期同步
-
[ EasyAdmin ]:一个基于SpringBoot2 + Sa-Token + Mybatis-Plus + Snakerflow + Layui 的后台管理系统,灵活多变可前后端分离,也可单体,内置代码生成器、权限管理、工作流引擎
总结
对于程序员来说,看看作者的代码实现也能有巨大收获,看看如何clean code,同时也能了解一波登录鉴权的玩法,何乐而不为。
文档地址:https://sa-token.cc/doc.html
开源地址:https://gitee.com/dromara/sa-token
写在最后(私活源码)
项目介绍
Jeepay是一套适合互联网企业使用的开源支付系统,支持多渠道服务商和普通商户模式。已对接微信支付,支付宝,云闪付官方接口,支持聚合码支付。
Jeepay使用Spring Boot和Ant Design Vue开发,集成Spring Security实现权限管理功能,是一套非常实用的web开发框架。
项目特点
· 支持多渠道对接,支付网关自动路由
· 已对接微信服务商和普通商户接口,支持V2和V3接口
· 已对接支付宝服务商和普通商户接口,支持RSA和RSA2签名
· 已对接云闪付服务商接口,可选择多家支付机构
· 提供http形式接口,提供各语言的sdk实现,方便对接
· 接口请求和响应数据采用签名机制,保证交易安全可靠
· 系统安全,支持分布式部署,高并发
· 管理端包括运营平台和商户系统
· 管理平台操作界面简洁、易用
· 支付平台到商户系统的订单通知使用MQ实现,保证了高可用,消息可达
· 支付渠道的接口参数配置界面自动化生成
· 使用spring security实现权限管理
· 前后端分离架构,方便二次开发
· 由原XxPay团队开发,有着多年支付系统开发经验
系统架构
Jeepay计全支付系统架构图
核心技术栈
软件名称 | 描述 | 版本 |
Jdk | Java环境 | 1.8 |
Spring Boot | 开发框架 | 2.4.5 |
Redis | 分布式缓存 | 3.2.8 或 高版本 |
MySQL | 数据库 | 5.7.X 或 8.0 高版本 |
MQ | 消息中间件 | ActiveMQ 或 RabbitMQ 或 RocketMQ |
Ant Design Vue | Ant Design的Vue实现,前端开发使用 | 2.1.2 |
MyBatis-Plus | MyBatis增强工具 | 3.4.2 |
WxJava | 微信开发Java SDK | 4.1.0 |
Hutool | Java工具类库 | 5.6.6 |
开发部署
· 系统开发:https://docs.jeequan.com/docs/jeepay/dev_serv
· 通道对接:https://docs.jeequan.com/docs/jeepay/dev_channel
· 线上部署:https://docs.jeequan.com/docs/jeepay/deploy
· 接口文档:https://docs.jeequan.com/docs/jeepay/payment_api
功能模块
Jeepay运营平台功能
Jeepay商户系统功能
系统截图
以下截图是从实际已完成功能界面截取
开源地址
扫码关注本号,后台回复 支付
扫码关注本号,后台回复 支付
持续关注本号,分享更多项目源码