欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java輕量級權(quán)限認證框架Sa-Token的使用

 更新時間:2022年03月23日 09:38:23   作者:jayjay  
Sa-Token是一個輕量級Java權(quán)限認證框架,本文就詳細的來介紹一下Java輕量級權(quán)限認證框架Sa-Token的使用,主要解決:登錄認證、權(quán)限認證、Session會話、單點登錄、OAuth2.0、微服務(wù)網(wǎng)關(guān)鑒權(quán)等,感興趣的可以了解一下

前言

相信大家都用過Spring Security和Shiro的框架,Spring Security必須配合Spring 全家桶使用和繁瑣的配置,Shiro簡單易學、輕便,但個人使用下來,覺得Sa-Token比Shiro更簡單易學一點,基本是開箱即用。

Sa-Token 是什么?

Sa-Token 是一個輕量級 Java 權(quán)限認證框架,主要解決:登錄認證、權(quán)限認證、Session會話、單點登錄、OAuth2.0、微服務(wù)網(wǎng)關(guān)鑒權(quán) 等一系列權(quán)限相關(guān)問題。

如何使用?

引入依賴

<dependency>
    <groupId>cn.dev33</groupId>
    <artifactId>sa-token-spring-boot-starter</artifactId>
    <version>1.29.0</version>
</dependency>

示例代碼

登錄接口就一行代碼:StpUtil.login(id)

@RestController
@RequestMapping
public class LoginController {

? ? @GetMapping("doLogin")
? ? public ResultModel doLogin(String name, String pwd) {
? ? ? ? // 此處僅作模擬示例,真實項目需要從數(shù)據(jù)庫中查詢數(shù)據(jù)進行比對
? ? ? ? if("jayjay".equals(name) && "123456".equals(pwd)) {
? ? ? ? ? ? StpUtil.login(1001);
? ? ? ? ? ? return ResultModel.success("登錄成功",StpUtil.getTokenInfo());
? ? ? ? }
? ? ? ? return ResultModel.error("登錄失敗");
? ? }

? ? @GetMapping("isLogin")
? ? public ResultModel isLogin() {
? ? ? ? return ResultModel.success("是否登錄:"+StpUtil.isLogin(),StpUtil.getTokenInfo());
? ? }

? ? @GetMapping("logout")
? ? public ResultModel logout() {
? ? ? ? StpUtil.logout();
? ? ? ? return ResultModel.success("登出成功");
? ? }
}

我們登錄一下:

登錄成功,請求isLogin測試一下是否登錄成功并獲取當前登錄用戶

這樣,我們就已經(jīng)完成登錄授權(quán)了,沒錯,在 Sa-Token 中,登錄認證就是如此簡單,不需要任何的復雜前置工作,只需這一行簡單的API調(diào)用,就可以完成會話登錄認證!

那么要怎么進行校驗登錄呢?只要在你需要校驗登錄處調(diào)用這個方法就行:

// 然后在需要校驗登錄處調(diào)用以下方法:
// 如果當前會話未登錄,這句代碼會拋出 `NotLoginException` 異常
StpUtil.checkLogin();

當然也可以使用注解或者攔截器,這個后面再說

常用方法

在 Sa-Token 中,絕大多數(shù)功能都可以 一行代碼 完成,在這里列舉一下常用方法:

StpUtil.login(10001);    // 標記當前會話登錄的賬號id
StpUtil.getLoginId();    // 獲取當前會話登錄的賬號id
StpUtil.isLogin();    // 獲取當前會話是否已經(jīng)登錄, 返回true或false
StpUtil.logout();    // 當前會話注銷登錄
StpUtil.kickout(10001);    // 將賬號為10001的會話踢下線
StpUtil.hasRole("super-admin");    // 查詢當前賬號是否含有指定角色標識, 返回true或false
StpUtil.hasPermission("user:add");    // 查詢當前賬號是否含有指定權(quán)限, 返回true或false
StpUtil.getSession();    // 獲取當前賬號id的Session
StpUtil.getSessionByLoginId(10001);    // 獲取賬號id為10001的Session
StpUtil.getTokenValueByLoginId(10001);    // 獲取賬號id為10001的token令牌值
StpUtil.login(10001, "PC");    // 指定設(shè)備標識登錄,常用于“同端互斥登錄”
StpUtil.kickout(10001, "PC");    // 指定賬號指定設(shè)備標識踢下線 (不同端不受影響)
StpUtil.openSafe(120);    // 在當前會話開啟二級認證,有效期為120秒 
StpUtil.checkSafe();    // 校驗當前會話是否處于二級認證有效期內(nèi),校驗失敗會拋出異常 
StpUtil.switchTo(10044);    // 將當前會話身份臨時切換為其它賬號 

常用注解

  • @SaCheckLogin: 登錄認證 —— 只有登錄之后才能進入該方法
  • @SaCheckRole("admin"): 角色認證 —— 必須具有指定角色標識才能進入該方法
  • @SaCheckPermission("user:add"): 權(quán)限認證 —— 必須具有指定權(quán)限才能進入該方法
  • @SaCheckSafe: 二級認證校驗 —— 必須二級認證之后才能進入該方法
  • @SaCheckBasic: HttpBasic認證 —— 只有通過 Basic 認證后才能進入該方法

以上注解均可在官網(wǎng)看到用法,我就不一一列舉了
不過,使用注解之前,還要把Sa-Token的攔截器開起來,默認是關(guān)閉的

注冊攔截器

以SpringBoot2.0為例, 新建配置類SaTokenConfigure.java

@Configuration
public class SaTokenConfigure implements WebMvcConfigurer {
    // 注冊Sa-Token的注解攔截器,打開注解式鑒權(quán)功能 
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        // 注冊注解攔截器,并排除不需要注解鑒權(quán)的接口地址 (與登錄攔截器無關(guān))
        registry.addInterceptor(new SaAnnotationInterceptor()).addPathPatterns("/**");    
    }
}

保證此類被springboot啟動類掃描到即可

Spring boot 集成

集成比較簡單,只要添加依賴就行,Sa-Token在Spring Boot中是可以零配置啟動的,上面的測試用例就是零配置啟動的
當然也可以根據(jù)自己需要在配置

1、在application.yml配置

# Sa-Token配置
sa-token: 
    # token名稱 (同時也是cookie名稱)
    token-name: satoken
    # token有效期,單位s 默認30天, -1代表永不過期 
    timeout: 2592000
    # token臨時有效期 (指定時間內(nèi)無操作就視為token過期) 單位: 秒
    activity-timeout: -1
    # 是否允許同一賬號并發(fā)登錄 (為true時允許一起登錄, 為false時新登錄擠掉舊登錄) 
    is-concurrent: true
    # 在多人登錄同一賬號時,是否共用一個token (為true時所有登錄共用一個token, 為false時每次登錄新建一個token) 
    is-share: false
    # token風格
    token-style: uuid
    # 是否輸出操作日志 
    is-log: false

2、通過代碼配置

/**
?* Sa-Token代碼方式進行配置
?*/
@Configuration
public class SaTokenConfigure {

? ? // 獲取配置Bean (以代碼的方式配置Sa-Token, 此配置會覆蓋yml中的配置)
? ? @Bean
? ? @Primary
? ? public SaTokenConfig getSaTokenConfigPrimary() {
? ? ? ? SaTokenConfig config = new SaTokenConfig();
? ? ? ? config.setTokenName("satoken"); ? ? ? ? ? ? // token名稱 (同時也是cookie名稱)
? ? ? ? config.setTimeout(30 * 24 * 60 * 60); ? ? ? // token有效期,單位s 默認30天
? ? ? ? config.setActivityTimeout(-1); ? ? ? ? ? ? ?// token臨時有效期 (指定時間內(nèi)無操作就視為token過期) 單位: 秒
? ? ? ? config.setIsConcurrent(true); ? ? ? ? ? ? ? // 是否允許同一賬號并發(fā)登錄 (為true時允許一起登錄, 為false時新登錄擠掉舊登錄)?
? ? ? ? config.setIsShare(true); ? ? ? ? ? ? ? ? ? ?// 在多人登錄同一賬號時,是否共用一個token (為true時所有登錄共用一個token, 為false時每次登錄新建一個token)?
? ? ? ? config.setTokenStyle("uuid"); ? ? ? ? ? ? ? // token風格?
? ? ? ? config.setIsLog(false); ? ? ? ? ? ? ? ? ? ? // 是否輸出操作日志?
? ? ? ? return config;
? ? }

}

上面配置并非全部配置,所有配置可以在官網(wǎng)查看,根據(jù)自己的需要選擇使用

總結(jié)

其他還有很多功能就不一一介紹了,感興趣的可以去Sa-Token官網(wǎng)了解,初步嘗試還挺不錯的,文檔和代碼示例都很全,基本功能都能滿足,源碼簡單易懂,可以隨意二開,封裝度非常高,因為是國人開發(fā)的,注釋也是中文的,不用擔心看不懂。如果你想找一個開箱即用的登錄授權(quán)框架,可以選擇Sa-Token,特別是接小項目私活的時候賊好用!

到此這篇關(guān)于Java輕量級權(quán)限認證框架Sa-Token的使用的文章就介紹到這了,更多相關(guān)Java Sa-Token內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解如何在SpringBoot里使用SwaggerUI

    詳解如何在SpringBoot里使用SwaggerUI

    本篇文章主要介紹了詳解如何在SpringBoot里使用SwaggerUI,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02
  • SpringBoot?整合Mybatis-Plus并輸出SQL日志示例詳解

    SpringBoot?整合Mybatis-Plus并輸出SQL日志示例詳解

    這篇文章主要介紹了SpringBoot整合Mybatis-Plus并輸出SQL日志,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-06-06
  • 詳解javaweb中jstl如何循環(huán)List中的Map數(shù)據(jù)

    詳解javaweb中jstl如何循環(huán)List中的Map數(shù)據(jù)

    這篇文章主要介紹了詳解javaweb中jstl如何循環(huán)List中的Map數(shù)據(jù)的相關(guān)資料,希望通過本文能幫助到大家,讓大家理解掌握這部分內(nèi)容,需要的朋友可以參考下
    2017-10-10
  • 最新評論