手把手教你使用sa-token解決網(wǎng)站權(quán)限驗(yàn)證

sa-token是什么谆棱?

sa-token是一個(gè)JavaWeb輕量級(jí)權(quán)限認(rèn)證框架叶组,其API調(diào)用非常簡(jiǎn)單拯田,有多簡(jiǎn)單呢?以登錄驗(yàn)證為例甩十,你只需要:

// 在登錄時(shí)寫入當(dāng)前會(huì)話的賬號(hào)id 
StpUtil.setLoginId(10001);    

// 然后在任意需要校驗(yàn)登錄處調(diào)用以下API  
// --- 如果當(dāng)前會(huì)話未登錄船庇,這句代碼會(huì)拋出 `NotLoginException`異常
StpUtil.checkLogin(); 

沒有復(fù)雜的封裝!不要任何的配置侣监!只需這兩行簡(jiǎn)單的調(diào)用鸭轮,即可輕松完成系統(tǒng)登錄鑒權(quán)!

與其它權(quán)限認(rèn)證框架相比橄霉,sa-token盡力保證兩點(diǎn):

  • 上手簡(jiǎn)單:能自動(dòng)化的配置全部自動(dòng)化窃爷,不讓你費(fèi)腦子
  • 功能強(qiáng)大:能涵蓋的功能全部涵蓋,不讓你用個(gè)框架還要自己給框架打各種補(bǔ)丁

如果上面的示例能夠證明sa-token的簡(jiǎn)單姓蜂,那么以下API則可以證明sa-token的強(qiáng)大

StpUtil.setLoginId(10001);          // 標(biāo)記當(dāng)前會(huì)話登錄的賬號(hào)id
StpUtil.getLoginId();               // 獲取當(dāng)前會(huì)話登錄的賬號(hào)id
StpUtil.isLogin();                  // 獲取當(dāng)前會(huì)話是否已經(jīng)登錄, 返回true或false
StpUtil.logout();                   // 當(dāng)前會(huì)話注銷登錄
StpUtil.logoutByLoginId(10001);     // 讓賬號(hào)為10001的會(huì)話注銷登錄(踢人下線)
StpUtil.hasRole("super-admin");     // 查詢當(dāng)前賬號(hào)是否含有指定角色標(biāo)識(shí), 返回true或false
StpUtil.hasPermission("user:add");  // 查詢當(dāng)前賬號(hào)是否含有指定權(quán)限, 返回true或false
StpUtil.getSession();               // 獲取當(dāng)前賬號(hào)id的Session 
StpUtil.getSessionByLoginId(10001); // 獲取賬號(hào)id為10001的Session
StpUtil.getTokenValueByLoginId(10001);  // 獲取賬號(hào)id為10001的token令牌值 

涵蓋功能

  • 登錄驗(yàn)證 —— 輕松登錄鑒權(quán)按厘,并提供五種細(xì)分場(chǎng)景值
  • 權(quán)限驗(yàn)證 —— 攔截違規(guī)調(diào)用,不同角色不同授權(quán)
  • Session會(huì)話 —— 專業(yè)的數(shù)據(jù)緩存中心
  • 踢人下線 —— 將違規(guī)用戶立刻清退下線
  • 模擬他人賬號(hào) —— 實(shí)時(shí)操作任意用戶狀態(tài)數(shù)據(jù)
  • 持久層擴(kuò)展 —— 可集成redis钱慢、MongoDB等專業(yè)緩存中間件
  • 多賬號(hào)認(rèn)證體系 —— 比如一個(gè)商城項(xiàng)目的user表和admin表分開鑒權(quán)
  • 無(wú)Cookie模式 —— APP逮京、小程序等前后臺(tái)分離場(chǎng)景
  • 注解式鑒權(quán) —— 優(yōu)雅的將鑒權(quán)與業(yè)務(wù)代碼分離
  • 花式token生成 —— 內(nèi)置六種token風(fēng)格,還可自定義token生成策略
  • 自動(dòng)續(xù)簽 —— 提供兩種token過期策略束莫,靈活搭配使用懒棉,還可自動(dòng)續(xù)簽
  • 組件自動(dòng)注入 —— 零配置與Spring等框架集成
  • 更多功能正在集成中... —— 如有您有好想法或者建議,歡迎加群交流
  • ...

SpringBoot集成示例

1览绿、創(chuàng)建項(xiàng)目

在IDE中新建一個(gè)Springboot項(xiàng)目策严,例如:sa-token-demo-springboot(不會(huì)的同學(xué)請(qǐng)自行百度或者參考github示例)

2、設(shè)置jar包依賴

  • pom.xml 中添加依賴:
<!-- sa-token 權(quán)限認(rèn)證, 在線文檔:http://sa-token.dev33.cn/ -->
<dependency>
    <groupId>cn.dev33</groupId>
    <artifactId>sa-token-spring-boot-starter</artifactId>
    <version>1.8.0</version>
</dependency>

3饿敲、配置文件

  • 你可以零配置啟動(dòng)項(xiàng)目
  • 但同時(shí)你也可以在application.yml中增加如下配置妻导,定制性使用框架:
spring: 
    # sa-token配置
    sa-token: 
        # token名稱 (同時(shí)也是cookie名稱)
        token-name: satoken
        # token有效期,單位s 默認(rèn)30天, -1代表永不過期 
        timeout: 2592000
        # token臨時(shí)有效期 (指定時(shí)間內(nèi)無(wú)操作就視為token過期) 單位: 秒
        activity-timeout: -1
        # 是否允許同一賬號(hào)并發(fā)登錄 (為true時(shí)允許一起登錄, 為false時(shí)新登錄擠掉舊登錄) 
        allow-concurrent-login: false
        # 在多人登錄同一賬號(hào)時(shí)诀蓉,是否共用一個(gè)token (為true時(shí)所有登錄共用一個(gè)token, 為false時(shí)每次登錄新建一個(gè)token) 
        is-share: false
        # token風(fēng)格
        token-style: uuid

4、創(chuàng)建主類

在項(xiàng)目中新建包 com.pj 渠啤,在此包內(nèi)新建主類 SaTokenDemoApplication.java,輸入以下代碼:

@SpringBootApplication
public class SaTokenDemoApplication {
    public static void main(String[] args) throws JsonProcessingException {
        SpringApplication.run(SaTokenDemoApplication.class, args); // run-->         
        System.out.println("啟動(dòng)成功:sa-token配置如下:" + SaTokenManager.getConfig());
    }
}

5添吗、運(yùn)行

運(yùn)行代碼沥曹,當(dāng)你從控制臺(tái)看到類似下面的內(nèi)容時(shí),就代表框架已經(jīng)成功集成了

image

倉(cāng)庫(kù)地址

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市妓美,隨后出現(xiàn)的幾起案子僵腺,更是在濱河造成了極大的恐慌,老刑警劉巖壶栋,帶你破解...
    沈念sama閱讀 219,589評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件辰如,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡贵试,警方通過查閱死者的電腦和手機(jī)琉兜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,615評(píng)論 3 396
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)毙玻,“玉大人豌蟋,你說我怎么就攤上這事∩L玻” “怎么了梧疲?”我有些...
    開封第一講書人閱讀 165,933評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)运准。 經(jīng)常有香客問我幌氮,道長(zhǎng),這世上最難降的妖魔是什么胁澳? 我笑而不...
    開封第一講書人閱讀 58,976評(píng)論 1 295
  • 正文 為了忘掉前任该互,我火速辦了婚禮,結(jié)果婚禮上听哭,老公的妹妹穿的比我還像新娘慢洋。我一直安慰自己,他們只是感情好陆盘,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,999評(píng)論 6 393
  • 文/花漫 我一把揭開白布普筹。 她就那樣靜靜地躺著,像睡著了一般隘马。 火紅的嫁衣襯著肌膚如雪太防。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,775評(píng)論 1 307
  • 那天酸员,我揣著相機(jī)與錄音蜒车,去河邊找鬼。 笑死幔嗦,一個(gè)胖子當(dāng)著我的面吹牛酿愧,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播邀泉,決...
    沈念sama閱讀 40,474評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼嬉挡,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼钝鸽!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起庞钢,我...
    開封第一講書人閱讀 39,359評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤拔恰,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后基括,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體颜懊,經(jīng)...
    沈念sama閱讀 45,854評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,007評(píng)論 3 338
  • 正文 我和宋清朗相戀三年风皿,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了河爹。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,146評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡揪阶,死狀恐怖昌抠,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情鲁僚,我是刑警寧澤炊苫,帶...
    沈念sama閱讀 35,826評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站冰沙,受9級(jí)特大地震影響侨艾,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜拓挥,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,484評(píng)論 3 331
  • 文/蒙蒙 一唠梨、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧侥啤,春花似錦当叭、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,029評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至赁炎,卻和暖如春醉箕,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背徙垫。 一陣腳步聲響...
    開封第一講書人閱讀 33,153評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工讥裤, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人姻报。 一個(gè)月前我還...
    沈念sama閱讀 48,420評(píng)論 3 373
  • 正文 我出身青樓己英,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親吴旋。 傳聞我的和親對(duì)象是個(gè)殘疾皇子剧辐,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,107評(píng)論 2 356

推薦閱讀更多精彩內(nèi)容