sa-token整合springboot中的代碼示例展示
sa-token 是一個(gè)輕量級(jí)的 Java 權(quán)限認(rèn)證框架,它可以很方便地集成到 Spring Boot 項(xiàng)目中,以提供簡(jiǎn)潔的認(rèn)證和授權(quán)功能。雖然 sa-token 本身并不直接支持 OAuth 2.0 的集成,但你可以將 OAuth 2.0 的認(rèn)證流程與 sa-token 的權(quán)限控制結(jié)合起來(lái)使用。
以下是一個(gè)簡(jiǎn)單的示例,展示了如何將 sa-token 整合到 Spring Boot 項(xiàng)目中:
添加 sa-token 的依賴到你的 pom.xml 文件中:
<dependency> <groupId>cn.dev33</groupId> <artifactId>sa-token-spring-boot-starter</artifactId> <version>最新版本</version> </dependency>
確保你使用的是最新的 sa-token 版本。
- 在
application.yml或application.properties中配置sa-token:
# application.yml 示例 sa-token: token-name: Authorization # token名稱 (header中key) token-type: bearer # token類型 (header中value的前綴) timeout: 3600 # token 過(guò)期時(shí)間, 單位秒 activity-timeout: -1 # 臨時(shí)token有效時(shí)間, 單位秒,-1表示永不過(guò)期 is-concurrent: true # 是否允許同一賬號(hào)并發(fā)登錄, 默認(rèn)false is-share: false # 在多個(gè)服務(wù)之間共享token時(shí),需要設(shè)置為true
- 創(chuàng)建一個(gè)配置類來(lái)初始化
sa-token:
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 初始化代碼
// 例如:設(shè)置全局的權(quán)限驗(yàn)證規(guī)則、登錄驗(yàn)證處理等
@Bean
public void initSaToken() {
// 初始化 Sa-Token,并設(shè)置全局的權(quán)限驗(yàn)證規(guī)則
SaHolder.setGlobalAuthHandler((request, response, exception) -> {
// 這里可以自定義全局的權(quán)限驗(yàn)證邏輯
// 例如:返回自定義的未授權(quán)提示信息
response.setContentType("application/json;charset=UTF-8");
response.getWriter().write("{\"code\":401,\"msg\":\"未授權(quán)\"}");
response.getWriter().flush();
response.getWriter().close();
});
}
}- 在你的 Controller 中使用
sa-token提供的注解來(lái)進(jìn)行權(quán)限控制:
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") // 這里會(huì)校驗(yàn)用戶是否具有 permission1 權(quán)限
public String needPermission() {
return "you have permission1";
}
@GetMapping("/needRole")
@SaCheckRole("admin") // 這里會(huì)校驗(yàn)用戶是否具有 admin 角色
public String needRole() {
return "you are admin";
}
}到此這篇關(guān)于sa-token整合springboot中的代碼的文章就介紹到這了,更多相關(guān)sa-token整合springboot內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java枚舉使用詳細(xì)介紹及實(shí)現(xiàn)
這篇文章主要介紹了java枚舉使用詳細(xì)介紹及實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下2017-06-06
Java調(diào)用Vue前端頁(yè)面生成PDF文件的完整代碼
在Vue應(yīng)用中,將頁(yè)面導(dǎo)出為PDF文件通常涉及到前端技術(shù)的組合,這篇文章主要介紹了Java調(diào)用Vue前端頁(yè)面生成PDF文件的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2025-10-10
Java讀取文件的簡(jiǎn)單實(shí)現(xiàn)方法
這篇文章主要介紹了Java讀取文件的簡(jiǎn)單實(shí)現(xiàn)方法,通過(guò)一個(gè)讀取txt格式的log文件為例,詳細(xì)的講述了Java讀取文件的方法及原理,需要的朋友可以參考下2014-09-09
Spring注解方式無(wú)法掃描Service注解的解決
這篇文章主要介紹了Spring注解方式無(wú)法掃描Service注解的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-10-10
詳解Java編程中Annotation注解對(duì)象的使用方法
這篇文章主要介紹了Java編程中Annotation注解對(duì)象的使用方法,注解以"@注解名"的方式被編寫,與類、接口、枚舉是在同一個(gè)層次,需要的朋友可以參考下2016-03-03
Java利用自定義注解實(shí)現(xiàn)數(shù)據(jù)校驗(yàn)
JSR303是一套JavaBean參數(shù)校驗(yàn)的標(biāo)準(zhǔn),它提供了一系列的校驗(yàn)方式,這些校驗(yàn)方式在javax.validation.constraints包中。本文就來(lái)聊聊如何利用它實(shí)現(xiàn)數(shù)據(jù)校驗(yàn)2022-09-09

