初識sa-token,一行代碼搞定登錄授權!

前言

在java的世界裏,有很多優秀的權限認證框架,如Apache ShiroSpring Security 等等。這些框架背景強大,歷史悠久,其生態也比較齊全。

但同時這些框架也並非十分完美,在前後台分離已成標配的互聯網時代,這些老牌框架的很多設計理念已經相當滯後,無法與我們的項目完美契合。

而今天我要介紹的這款框架,專門為前後台分離架構而生, 功能強大, 上手簡單 —— sa-token。

sa-token 是什麼?

sa-token是一個輕量級Java權限認證框架,主要解決: 登錄認證、權限認證、Session會話 等一系列權限相關問題

sa-token的API調用非常簡單,一行代碼即可搞定登錄授權,廢話不多說,我們直接上示例:

1. 添加pom依賴
<!-- sa-token 權限認證, 在線文檔://sa-token.dev33.cn/ -->
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-spring-boot-starter</artifactId>
<version>1.12.0</version>
</dependency>
2. 調用框架API進行登錄
// 在用戶賬號密碼驗證成功後,直接調用以下API進行登錄授權
StpUtil.setLoginId(10001); 

至此,我們已經藉助sa-token框架完成登錄授權!

此時的你的小腦袋可能飄滿了問號,就這麼簡單?自定義Realm呢?全局過濾器呢?我不用寫各種配置文件嗎?

事實上在此我可以負責的告訴你,在sa-token中,登錄授權就是如此的簡單,不需要什麼全局過濾器,不需要各種亂七八糟的配置!只需要這一行簡單的API調用,即可完成會話的登錄授權!

當你受夠Shiro、Security等框架的三拜九叩之後,你就會明白,相對於這些傳統老牌框架,sa-token的API設計是多麼的清爽!

拒絕引入複雜的概念,以實際業務需求為第一目標進行定向突破,業務上需要什麼,sa-token就做什麼,不搞各種雲里霧裡的高大上概念,以化繁為簡為第一目標!

除了以上的登錄授權,sa-token還可以一行代碼完成以下功能:

StpUtil.setLoginId(10001); // 標記當前會話登錄的賬號id
StpUtil.getLoginId(); // 獲取當前會話登錄的賬號id
StpUtil.isLogin(); // 獲取當前會話是否已經登錄, 返回true或false
StpUtil.logout(); // 當前會話註銷登錄
StpUtil.logoutByLoginId(10001); // 讓賬號為10001的會話註銷登錄(踢人下線)
StpUtil.hasRole("super-admin"); // 查詢當前賬號是否含有指定角色標識, 返回true或false
StpUtil.hasPermission("user:add"); // 查詢當前賬號是否含有指定權限, 返回true或false
StpUtil.getSession(); // 獲取當前賬號id的Session 
StpUtil.getSessionByLoginId(10001); // 獲取賬號id為10001的Session
StpUtil.getTokenValueByLoginId(10001); // 獲取賬號id為10001的token令牌值
StpUtil.setLoginId(10001, "PC"); // 指定設備標識登錄
StpUtil.logoutByLoginId(10001, "PC"); // 指定設備標識進行強制註銷 (不同端不受影響)
StpUtil.switchTo(10044); // 將當前會話身份臨時切換為其它賬號 

sa-token的API眾多,請恕此處無法逐一為您展示,以上示例只是框架能力的很小一部分能力展示。

sa-token中,各種與登錄鑒權相關功能:踢人下線、自動續簽、同端互斥登錄等常見業務均可以一行代碼調用實現

關於sa-token的授權登錄先介紹至此,接下來的章節我會陸續介紹sa-token框架的其它各種強大能力

如果覺得文章寫得不錯還請大家不要吝惜為文章點個贊,您的支持是我更新的最大動力!

最後附上項目鏈接: