返回

初次接触 Java 轻量级权限认证框架 Sa-Token

后端

好的,您想让我以独一无二的观点写一篇关于 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 除了提供基本