sa-token整合springboot中的代码

sa-token 是一个轻量级的 Java 权限认证框架,它可以很方便地集成到 Spring Boot 项目中,以提供简洁的认证和授权功能。虽然 sa-token 本身并不直接支持 OAuth 2.0 的集成,但你可以将 OAuth 2.0 的认证流程与 sa-token 的权限控制结合起来使用。

以下是一个简单的示例,展示了如何将 sa-token 整合到 Spring Boot 项目中:

  1. 添加 sa-token 的依赖到你的 pom.xml 文件中:
 

xml复制代码

<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-spring-boot-starter</artifactId>
<version>最新版本</version>
</dependency>

确保你使用的是最新的 sa-token 版本。

  1. 在 application.yml 或 application.properties 中配置 sa-token
 

yaml复制代码

# application.yml 示例
sa-token:
token-name: Authorization # token名称 (header中key)
token-type: bearer # token类型 (header中value的前缀)
timeout: 3600 # token 过期时间, 单位秒
activity-timeout: -1 # 临时token有效时间, 单位秒,-1表示永不过期
is-concurrent: true # 是否允许同一账号并发登录, 默认false
is-share: false # 在多个服务之间共享token时,需要设置为true
  1. 创建一个配置类来初始化 sa-token
 

java复制代码

import cn.dev33.satoken.context.SaHolder;
import cn.dev33.satoken.filter.SaTokenFilter;
import cn.dev33.satoken.integration.springboot.SaTokenAutoConfiguration;
import cn.dev33.satoken.integration.springboot.properties.SaTokenProperties;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
@AutoConfigureAfter(SaTokenAutoConfiguration.class)
public class SaTokenConfig {
@Bean
@ConditionalOnMissingBean
public SaTokenFilter saTokenFilter(SaTokenProperties saTokenProperties) {
return new SaTokenFilter(saTokenProperties);
}
// 你可以在这里添加自定义的 SaToken 初始化代码
// 例如:设置全局的权限验证规则、登录验证处理等
@Bean
public void initSaToken() {
// 初始化 Sa-Token,并设置全局的权限验证规则
SaHolder.setGlobalAuthHandler((request, response, exception) -> {
// 这里可以自定义全局的权限验证逻辑
// 例如:返回自定义的未授权提示信息
response.setContentType("application/json;charset=UTF-8");
response.getWriter().write("{\"code\":401,\"msg\":\"未授权\"}");
response.getWriter().flush();
response.getWriter().close();
});
}
}
  1. 在你的 Controller 中使用 sa-token 提供的注解来进行权限控制:
 

java复制代码

import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.dev33.satoken.annotation.SaCheckRole;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class MyController {
@GetMapping("/needPermission")
@SaCheckPermission("permission1") // 这里会校验用户是否具有 permission1 权限
public String needPermission() {
return "you have permission1";
}
@GetMapping("/needRole")
@SaCheckRole("admin") // 这里会校验用户是否具有 admin 角色
public String needRole() {
return "you are admin";
}
}

  • 16
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xxq121389527

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值