返回
初次接触 Java 轻量级权限认证框架 Sa-Token
后端
2023-12-03 23:05:15
好的,您想让我以独一无二的观点写一篇关于 Java 轻量级权限认证框架 Sa-Token 的文章。保证做到:
- 逻辑鲜明、连贯通顺,同时保持独特性和上下文关联。
- 以情感色彩丰富的文字和精准的词汇表达,构建文章框架。
- 控制文章标题在30个字以内,且满足 SEO 规则。
- 满足 SEO 原则,灵活运用关键词。
- 提供约 150 字的 SEO 文章。
- 确保文章原创,避免抄袭或引用他人观点,且通俗易懂,便于信息传递。
- 保证不少于 1800 字数,并平衡文章的全面性和创新性,提供有趣且有用的细节和实例。
- 若编写技术指南,则提供明确的步骤和示例代码。
文章的具体细节如下:
Java 轻量级权限认证框架 Sa-Token 初体验
在 Java 世界里,Spring Security 和 Shiro 是两大主流权限认证框架。然而,对于小型项目和微服务架构来说,Spring Security 和 Shiro 显得有些臃肿和复杂,增加了系统的复杂度和学习成本。
因此,Sa-Token 应运而生。它是一个 Java 轻量级权限认证框架,小巧灵活,使用简单,易于集成,非常适合小型项目和微服务架构。
一、Sa-Token 简介
Sa-Token 是一个开源的 Java 权限认证框架,它具有以下特点:
- 轻量级: Sa-Token 非常轻量级,jar 包大小仅为几十 KB,不会对系统性能造成太大影响。
- 使用简单: Sa-Token 的 API 设计非常简单,学习成本低,上手快,易于集成。
- 灵活性强: Sa-Token 非常灵活,可以根据项目的具体需求进行配置,支持多种认证方式和权限控制方式。
- 扩展性强: Sa-Token 提供了丰富的扩展点,可以方便地集成其他框架或组件。
二、Sa-Token 基本使用
1. 添加依赖
首先,在项目的 pom.xml 文件中添加 Sa-Token 的依赖:
<dependency>
<groupId>com.github.sa-token</groupId>
<artifactId>sa-token-starter</artifactId>
<version>最新版本</version>
</dependency>
2. 启用 Sa-Token
在 Spring Boot 项目中,需要在 application.yml
文件中启用 Sa-Token:
sa-token:
enabled: true
3. 配置数据源
Sa-Token 可以使用多种数据源,比如数据库、Redis 等。在 application.yml
文件中配置数据源:
sa-token:
# 使用 JdbcTemplate 来管理数据源
jdbcTemplate:
# 数据库连接池
dataSource:
# 使用 HikariCP 连接池
type: com.zaxxer.hikari.HikariDataSource
# 数据库连接地址
url: jdbc:mysql://localhost:3306/sa_token
# 数据库用户名
username: root
# 数据库密码
password: root
4. 创建用户
在数据库中创建用户表,表结构如下:
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(255) DEFAULT NULL,
`password` varchar(255) DEFAULT NULL,
`role` varchar(255) DEFAULT NULL,
`permission` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
);
在用户表中插入一些用户数据,比如:
INSERT INTO `user` (`id`, `username`, `password`, `role`, `permission`) VALUES
(1, 'admin', 'admin123', 'admin', 'user:add,user:edit,user:delete'),
(2, 'user1', 'user123', 'user', 'user:add,user:edit'),
(3, 'user2', 'user2123', 'user', 'user:add');
5. 实现认证和授权
在控制器中实现认证和授权,比如:
@PostMapping("/login")
public String login(String username, String password) {
// 认证
StpUser user = saTokenService.login(username, password);
// 授权
if (saTokenService.hasPermission("user:add")) {
// 有权限,执行业务逻辑
return "success";
} else {
// 无权限,返回错误信息
return "error";
}
}
三、Sa-Token 高级特性
Sa-Token 除了提供基本