Spring Boot 集成 sa-token 实践教程

2024-05-13 05:28

本文主要是介绍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 {@Overridepublic 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是当前登录用户的idreturn "登录成功";} 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 {@Overridepublic 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的更多高级功能,如角色管理、权限细分等,可以通过阅读官方文档进一步学习。


在这里插入图片描述

这篇关于Spring Boot 集成 sa-token 实践教程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/984796

相关文章

java中pdf模版填充表单踩坑实战记录(itextPdf、openPdf、pdfbox)

《java中pdf模版填充表单踩坑实战记录(itextPdf、openPdf、pdfbox)》:本文主要介绍java中pdf模版填充表单踩坑的相关资料,OpenPDF、iText、PDFBox是三... 目录准备Pdf模版方法1:itextpdf7填充表单(1)加入依赖(2)代码(3)遇到的问题方法2:pd

Java Stream流之GroupBy的用法及应用场景

《JavaStream流之GroupBy的用法及应用场景》本教程将详细介绍如何在Java中使用Stream流的groupby方法,包括基本用法和一些常见的实际应用场景,感兴趣的朋友一起看看吧... 目录Java Stream流之GroupBy的用法1. 前言2. 基础概念什么是 GroupBy?Stream

SpringBoot监控API请求耗时的6中解决解决方案

《SpringBoot监控API请求耗时的6中解决解决方案》本文介绍SpringBoot中记录API请求耗时的6种方案,包括手动埋点、AOP切面、拦截器、Filter、事件监听、Micrometer+... 目录1. 简介2.实战案例2.1 手动记录2.2 自定义AOP记录2.3 拦截器技术2.4 使用Fi

最新Spring Security的基于内存用户认证方式

《最新SpringSecurity的基于内存用户认证方式》本文讲解SpringSecurity内存认证配置,适用于开发、测试等场景,通过代码创建用户及权限管理,支持密码加密,虽简单但不持久化,生产环... 目录1. 前言2. 因何选择内存认证?3. 基础配置实战❶ 创建Spring Security配置文件

Spring Security 单点登录与自动登录机制的实现原理

《SpringSecurity单点登录与自动登录机制的实现原理》本文探讨SpringSecurity实现单点登录(SSO)与自动登录机制,涵盖JWT跨系统认证、RememberMe持久化Token... 目录一、核心概念解析1.1 单点登录(SSO)1.2 自动登录(Remember Me)二、代码分析三、

springboot自定义注解RateLimiter限流注解技术文档详解

《springboot自定义注解RateLimiter限流注解技术文档详解》文章介绍了限流技术的概念、作用及实现方式,通过SpringAOP拦截方法、缓存存储计数器,结合注解、枚举、异常类等核心组件,... 目录什么是限流系统架构核心组件详解1. 限流注解 (@RateLimiter)2. 限流类型枚举 (

Java Thread中join方法使用举例详解

《JavaThread中join方法使用举例详解》JavaThread中join()方法主要是让调用改方法的thread完成run方法里面的东西后,在执行join()方法后面的代码,这篇文章主要介绍... 目录前言1.join()方法的定义和作用2.join()方法的三个重载版本3.join()方法的工作原

2025版mysql8.0.41 winx64 手动安装详细教程

《2025版mysql8.0.41winx64手动安装详细教程》本文指导Windows系统下MySQL安装配置,包含解压、设置环境变量、my.ini配置、初始化密码获取、服务安装与手动启动等步骤,... 目录一、下载安装包二、配置环境变量三、安装配置四、启动 mysql 服务,修改密码一、下载安装包安装地

Spring AI使用tool Calling和MCP的示例详解

《SpringAI使用toolCalling和MCP的示例详解》SpringAI1.0.0.M6引入ToolCalling与MCP协议,提升AI与工具交互的扩展性与标准化,支持信息检索、行动执行等... 目录深入探索 Spring AI聊天接口示例Function CallingMCPSTDIOSSE结束语

Java获取当前时间String类型和Date类型方式

《Java获取当前时间String类型和Date类型方式》:本文主要介绍Java获取当前时间String类型和Date类型方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录Java获取当前时间String和Date类型String类型和Date类型输出结果总结Java获取