Spring Boot 集成 sa-token 实践教程

Spring Boot 集成 sa-token 实践教程

sa-token 是一个轻量级且功能强大的权限认证框架,它基于Java语言,专为Java开发者设计,以简化权限管理的复杂性。在Spring Boot项目中集成sa-token,可以快速实现会话管理、权限控制等功能。本文将通过教程式写作,带领读者一步步实现Spring Boot与sa-token的集成。

环境准备

  • JDK 1.8 或以上版本
  • Maven 或 Gradle 作为构建工具
  • Spring Boot 2.x 版本
  • IntelliJ IDEA 或 Eclipse 作为开发IDE

集成步骤

添加依赖

首先,需要在项目的pom.xml文件中添加sa-token的依赖。以Maven为例:

<dependencies>
    <!-- 引入sa-token核心模块 -->
    <dependency>
        <groupId>cn.dev33</groupId>
        <artifactId>sa-token-spring-boot-starter</artifactId>
        <version>1.21.0</version>
    </dependency>
    <!-- 其他Spring Boot依赖 -->
</dependencies>

配置文件

application.propertiesapplication.yml中,可以对sa-token进行一些基本配置,例如:

sa-token.token-name = sa-token
sa-token.token-time = 3600

启用sa-token

创建一个配置类,启用sa-token

import org.springframework.context.annotation.Configuration;
import cn.dev33.satoken.spring.SaTokenConfig;

@Configuration
public class SaTokenConfigDemo implements SaTokenConfig {
    @Override
    public void config() {
        // 此处可以配置sa-token的行为
    }
}

编写登录逻辑

实现一个登录方法,用于生成token:

import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import cn.dev33.satoken.SaManager;
import cn.dev33.satoken.SaToken;
import cn.dev33.satoken.stp.SaLoginModel;

@RestController
public class LoginController {

    @PostMapping("/login")
    public String login(@RequestParam("username") String username,
                        @RequestParam("password") String password) {
        // 假设此处有数据库校验逻辑
        if ("admin".equals(username) && "123456".equals(password)) {
            // 账号密码校验成功后,使用sa-token进行登录
            SaManager.login(10001); // 假设10001是当前登录用户的id
            return "登录成功";
        } else {
            return "账号或密码错误";
        }
    }
}

权限控制

使用@SaCheckPermission注解实现权限控制:

import cn.dev33.satoken.annotation.SaCheckPermission;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class SecureController {

    @GetMapping("/secure")
    @SaCheckPermission("admin") // 只有拥有admin权限的才能访问
    public String secureInfo() {
        return "这是受保护的信息";
    }
}

示例代码

以下是一些示例代码的汇总,供读者参考:

// SaTokenConfigDemo.java
@Configuration
public class SaTokenConfigDemo implements SaTokenConfig {
    @Override
    public void config() {
        // 配置sa-token行为
    }
}

// LoginController.java
@RestController
public class LoginController {
    @PostMapping("/login")
    public String login(@RequestParam("username") String username,
                        @RequestParam("password") String password) {
        // 登录逻辑
    }
}

// SecureController.java
@RestController
public class SecureController {
    @GetMapping("/secure")
    @SaCheckPermission("admin")
    public String secureInfo() {
        // 受保护的信息
    }
}

测试

启动应用,访问/login接口进行登录,然后尝试访问/secure接口,查看权限控制效果。

结语

通过以上步骤,我们已经成功地将sa-token集成到了Spring Boot项目中,实现了基本的登录和权限控制功能。sa-token的更多高级功能,如角色管理、权限细分等,可以通过阅读官方文档进一步学习。


在这里插入图片描述

相关推荐

  1. springboot集成Sa-Token及Redis的redisson客户端

    2024-05-13 09:06:04       59 阅读
  2. Vue3+springboot+sa-token

    2024-05-13 09:06:04       26 阅读
  3. Springboot集成token认证

    2024-05-13 09:06:04       29 阅读
  4. SpringBoot项目集成Redis+JWT实现系统登录token校验

    2024-05-13 09:06:04       46 阅读
  5. sa-token整合oauth2

    2024-05-13 09:06:04       32 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-13 09:06:04       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-13 09:06:04       106 阅读
  3. 在Django里面运行非项目文件

    2024-05-13 09:06:04       87 阅读
  4. Python语言-面向对象

    2024-05-13 09:06:04       96 阅读

热门阅读

  1. 讲一下Git 和 事务的自我新理解

    2024-05-13 09:06:04       29 阅读
  2. 监控易:IP地址管理功能

    2024-05-13 09:06:04       31 阅读
  3. 批处理wordpress文件权限

    2024-05-13 09:06:04       27 阅读
  4. Springboot整合向量数据库Milvus

    2024-05-13 09:06:04       30 阅读
  5. spring中常用注解

    2024-05-13 09:06:04       30 阅读
  6. Android WebSocket 使用指南:详细步骤与实践

    2024-05-13 09:06:04       32 阅读
  7. web3.js的使用

    2024-05-13 09:06:04       37 阅读
  8. 历史文件清理

    2024-05-13 09:06:04       32 阅读