JAVA和Nginx 教程大全

网站首页 > 精选教程 正文

27.9K Star 一个轻量级 Java 权限认证框架

wys521 2024-11-26 12:34:35 精选教程 17 ℃ 0 评论

嗨,艾瑞巴蒂,我是硕宇精选,致力于发现、汇总和分享优秀的开源项目,欢迎大家关注和咨询。今天小编为大家介绍一个轻量级 Java 权限认证框架,让鉴权变得简单、优雅!主要解决:登录认证、权限认证、单点登录、OAuth2.0、分布式Session会话、微服务网关鉴权 等一系列权限相关问题。接下来小编为您详细介绍这款高星项目。

功能模块:

目前主要五大功能模块:登录认证、权限认证、单点登录、OAuth2.0、微服务鉴权。

功能结构图:

功能说明:

本项目旨在以简单、优雅的方式完成系统的权限认证部分,以登录认证为例,你只需要:

// 会话登录,参数填登录人的账号id 
StpUtil.login(10001);

无需实现任何接口,无需创建任何配置文件,只需要这一句静态代码的调用,便可以完成会话登录认证。

如果一个接口需要登录后才能访问,我们只需调用以下代码:

// 校验当前客户端是否已经登录,如果未登录则抛出 `NotLoginException` 异常
StpUtil.checkLogin();

大多数功能都可以一行代码解决:

踢人下线:

// 将账号id为 10077 的会话踢下线 
StpUtil.kickout(10077);

权限认证:

// 注解鉴权:只有具备 `user:add` 权限的会话才可以进入方法
@SaCheckPermission("user:add")
public String insert(SysUser user) {
    // ... 
    return "用户增加";
}

路由拦截鉴权:

// 根据路由划分模块,不同模块不同鉴权 
registry.addInterceptor(new SaInterceptor(handler -> {
	SaRouter.match("/user/**", r -> StpUtil.checkPermission("user"));
	SaRouter.match("/admin/**", r -> StpUtil.checkPermission("admin"));
	SaRouter.match("/goods/**", r -> StpUtil.checkPermission("goods"));
	SaRouter.match("/orders/**", r -> StpUtil.checkPermission("orders"));
	SaRouter.match("/notice/**", r -> StpUtil.checkPermission("notice"));
	// 更多模块... 
})).addPathPatterns("/**");

单点登录:

由简入难划分为三种模式,解决不同架构下的 SSO 接入问题:

系统架构

采用模式

简介

文档链接

前端同域 + 后端同 Redis

模式一

共享Cookie同步会话

文档、示例

前端不同域 + 后端同 Redis

模式二

URL重定向传播会话

文档、示例

前端不同域 + 后端 不同Redis

模式三

Http请求获取会话

文档、示例


授权认证:

分为四种授权模式,解决不同场景下的授权需求

授权模式

简介

授权码(Authorization Code)

OAuth2.0 标准授权步骤,Server 端向 Client 端下放 Code 码,Client 端再用 Code 码换取授权 Token

隐藏式(Implicit)

无法使用授权码模式时的备用选择,Server 端使用 URL 重定向方式直接将 Token 下放到 Client 端页面

密码式(Password)

Client直接拿着用户的账号密码换取授权 Token

客户端凭证(Client Credentials)

Server 端针对 Client 级别的 Token,代表应用自身的资源授权

源码地址:

https://gitee.com/dromara/sa-token

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表