嗨,大家好,我是小华同学,关注我们获得“最新、最全、最优质”开源项目和工作学习方法
Sa-Token是一个轻量级的Java权限认证框架,旨在为开发者提供简洁、高效的权限认证解决方案。它以简单易用、功能强大、扩展性强等特点受到了许多开发者的喜爱。
二、核心功能
1. 权限认证
Sa-Token 提供了丰富的权限认证方式,包括登录认证、角色认证、权限认证等,可轻松实现各种权限控制场景。
2. 会话管理
Sa-Token 提供了强大的会话管理功能,支持分布式会话,使得在不同服务器之间的用户状态得以共享。
3. 账号封禁
Sa-Token 支持对账号进行封禁处理,可限制恶意用户登录系统。
4. 拦截器扩展
Sa-Token 提供了拦截器扩展机制,允许开发者自定义拦截器,实现个性化需求。
三、应用场景
-
企业级应用:如 OA、CRM、ERP 等,实现用户权限管理。
-
互联网应用:如电商平台、社交平台等,实现用户登录、权限控制等功能。
-
移动应用:如 Android、iOS 应用,实现用户认证、会话管理等功能。
应用场景
Sa-Token
适用于多种应用场景,包括但不限于:
-
企业内部系统:如OA、CRM等,需要对不同角色进行精细的权限控制。
-
多租户应用:需要对不同租户进行隔离和权限管理。
-
微服务架构:在微服务架构中,
Sa-Token
可以作为统一的认证中心,为各个服务提供认证服务。 -
单点登录(SSO):
Sa-Token
支持OAuth2.0,可以轻松实现单点登录功能。
具体使用方法
-
集成Sa-Token
首先,在项目中添加Sa-Token的依赖:
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token</artifactId>
<version>最新版本</version>
</dependency>
-
配置Sa-Token
在项目配置文件中,添加以下配置:
sa-token:
# token名称(同时也是cookie名称)
token-name: satoken
# token有效期,单位秒
timeout: 2592000
# token临时有效期(指定时间内无操作,则自动刷新token),单位秒
activity-timeout: 1800
-
使用Sa-Token进行登录认证
// 登录接口
@RequestMapping("/login")
public SaResult login(String username, String password) {
// 校验用户名和密码
if ("zhangsan".equals(username) && "123456".equals(password)) {
// 登录成功,创建token
String token = SaTokenUtil.login(10001);
return SaResult.ok("登录成功").set("token", token);
}
return SaResult.error("用户名或密码错误");
}
-
使用Sa-Token进行权限认证
// 拦截器,进行权限认证
@Component
public class SaTokenInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// 检查是否登录
if (!SaTokenUtil.isLogin()) {
// 未登录,跳转到登录页面
response.sendRedirect("/login.html");
return false;
}
// 检查权限
if (!SaTokenUtil.hasPermission("user:add")) {
// 无权限,抛出异常
throw new SaTokenException("没有权限");
}
return true;
}
}
资源图片
同类项目对比
-
Shiro:Shiro是一个功能强大的Java安全框架,但相较于Sa-Token,其配置较为复杂,学习成本较高。
-
Spring Security:Spring Security是一个基于Spring的安全框架,功能丰富,但与Spring框架耦合度较高,不适用于非Spring项目。
-
JWT:JWT是一种基于Token的认证方式,但仅限于Token的生成和验证,缺乏完善的权限管理功能。
综上所述,Sa-Token凭借其简单易用、功能强大、扩展性强的特点,在Java权限认证领域具有很高的竞争力。如果您正在寻找一款轻量级的Java权限认证框架,不妨试试Sa-Token。
项目地址
https://gitee.com/dromara/sa-token