在java的世界裏,有不少優秀的權限認證框架,如Apache Shiro
、Spring Security
等等。這些框架背景強大,歷史悠久,其生態也比較齊全。java
但同時這些框架也並不是十分完美,在先後臺分離已成標配的互聯網時代,這些老牌框架的不少設計理念已經至關滯後,沒法與咱們的項目完美契合。git
而今天我要介紹的這款框架,專門爲先後臺分離架構而生, 功能強大, 上手簡單 —— sa-token。github
sa-token是一個輕量級Java權限認證框架,主要解決:登陸認證、權限認證、Session會話、單點登陸、OAuth2.0 等一系列權限相關問題小程序
框架針對踢人下線、自動續簽、先後臺分離、分佈式會話……等常見業務進行N多適配,經過sa-token,你能夠以一種極簡的方式實現系統的權限認證部分瀏覽器
與其它權限認證框架相比,sa-token
具備如下優點:緩存
有了sa-token,你全部的權限認證問題,都再也不是問題!restful
sa-token的API調用很是簡單,有多簡單呢?以登陸驗證爲例,你只須要:架構
// 在登陸時寫入當前會話的帳號id StpUtil.setLoginId(10001); // 而後在任意須要校驗登陸處調用如下API // 若是當前會話未登陸,這句代碼會拋出 `NotLoginException`異常 StpUtil.checkLogin();
至此,咱們已經藉助sa-token框架完成登陸受權!app
此時的你小腦殼可能飄滿了問號,就這麼簡單?自定義Realm呢?全局過濾器呢?我不用寫各類配置文件嗎?框架
事實上在此我能夠負責的告訴你,在sa-token中,登陸受權就是如此的簡單,不須要什麼全局過濾器,不須要各類亂七八糟的配置!只須要這一行簡單的API調用,便可完成會話的登陸受權!
當你受夠Shiro、Security等框架的三拜九叩以後,你就會明白,相對於這些傳統老牌框架,sa-token的API設計是多麼的清爽!
權限認證示例 (只有具備user:add
權限的會話才能夠進入請求)
@SaCheckPermission("user:add") @RequestMapping("/user/insert") public String insert(SysUser user) { // ... return "用戶增長"; }
將某個帳號踢下線 (待到對方再次訪問系統時會拋出NotLoginException
異常)
// 使帳號id爲10001的會話註銷登陸 StpUtil.logoutByLoginId(10001);
除了以上的示例,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衆多,請恕此處沒法爲您逐一展現,更多示例請戳官方在線文檔
最後附上項目連接: