今天为大家介绍一个轻量级 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请求获取会话
|
文档、示例
|