国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

使用 Sa-Token 實(shí)現(xiàn)不同的登錄模式:?jiǎn)蔚氐卿?、多地登錄、同端互斥登?/h1>

這篇具有很好參考價(jià)值的文章主要介紹了使用 Sa-Token 實(shí)現(xiàn)不同的登錄模式:?jiǎn)蔚氐卿洝⒍嗟氐卿?、同端互斥登錄。希望?duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

一、需求分析

如果你經(jīng)常使用騰訊QQ,就會(huì)發(fā)現(xiàn)它的登錄有如下特點(diǎn):它可以手機(jī)電腦同時(shí)在線(xiàn),但是不能在兩個(gè)手機(jī)上同時(shí)登錄一個(gè)賬號(hào)。

同端互斥登錄,指的就是:像騰訊QQ一樣,在同一類(lèi)型設(shè)備上只允許單地點(diǎn)登錄,在不同類(lèi)型設(shè)備上允許同時(shí)在線(xiàn)。

動(dòng)態(tài)演示圖:

Sa-Token 是一個(gè)輕量級(jí) java 權(quán)限認(rèn)證框架,主要解決登錄認(rèn)證、權(quán)限認(rèn)證、單點(diǎn)登錄、OAuth2、微服務(wù)網(wǎng)關(guān)鑒權(quán) 等一系列權(quán)限相關(guān)問(wèn)題。
Gitee 開(kāi)源地址:https://gitee.com/dromara/sa-token

本文將介紹在 Sa-Token 中,如何實(shí)現(xiàn)以下登錄策略:

  • 單地登錄:指一個(gè)賬號(hào)同一時(shí)間只能在一個(gè)地方登錄,新登錄會(huì)擠掉舊登錄,也可以叫:?jiǎn)味说卿洝?/li>
  • 多地登錄:指一個(gè)賬號(hào)同一時(shí)間可以在不同地方登錄,新登錄會(huì)和舊登錄共存,也可以叫:多端登錄。
  • 同端互斥登錄:在同一類(lèi)型設(shè)備上只允許單地點(diǎn)登錄,在不同類(lèi)型設(shè)備上允許同時(shí)在線(xiàn),參考騰訊QQ的登錄模式:手機(jī)和電腦可以同時(shí)在線(xiàn),但不能兩個(gè)手機(jī)同時(shí)在線(xiàn)。

與之對(duì)應(yīng)的,注銷(xiāo)策略也將分為以下幾種:

  • 單端注銷(xiāo):只在調(diào)用退出的一端注銷(xiāo)。
  • 全端注銷(xiāo):一端注銷(xiāo),全端下線(xiàn)。
  • 同端注銷(xiāo):例如將所有手機(jī)端注銷(xiāo)下線(xiàn),PC端不受影響。

二、多地登錄

此模式較為簡(jiǎn)單,Sa-Token 默認(rèn)模式即為多地登錄模式。

1、首先引入 Sa-Token 依賴(lài):
<!-- Sa-Token 權(quán)限認(rèn)證 -->
<dependency>
	<groupId>cn.dev33</groupId>
	<artifactId>sa-token-spring-boot-starter</artifactId>
	<version>1.34.0</version>
</dependency>

注:如果你使用的是 SpringBoot 3.x,只需要將 sa-token-spring-boot-starter 修改為 sa-token-spring-boot3-starter 即可。

2、在用戶(hù)登錄時(shí)將賬號(hào)id寫(xiě)入會(huì)話(huà)中
@RestController
@RequestMapping("/user/")
public class UserController {
	@RequestMapping("doLogin")
	public SaResult doLogin(String username, String password) {
		// 此處僅作示例模擬,真實(shí)項(xiàng)目需要從數(shù)據(jù)庫(kù)中查詢(xún)數(shù)據(jù)進(jìn)行比對(duì) 
		if("zhang".equals(username) && "123456".equals(password)) {
			StpUtil.login(10001);
			return SaResult.ok("登錄成功");
		}
		return SaResult.ok("登錄失敗");
	}
}

啟動(dòng)類(lèi):

@SpringBootApplication
public class SaTokenDemoApplication {
	public static void main(String[] args) {
		SpringApplication.run(SaTokenDemoApplication.class, args); 
		System.out.println("\n啟動(dòng)成功:Sa-Roken 配置如下:" + SaManager.getConfig());
	}
}

如上代碼,在多人登錄同一賬號(hào)時(shí)將不會(huì)對(duì)舊會(huì)話(huà)做任何處理,同一賬號(hào)可以在多個(gè)地點(diǎn)任意登錄,互不影響。

3、如果要全端注銷(xiāo),可以調(diào)用 logout 方法:
// 會(huì)話(huà)注銷(xiāo)
@RequestMapping("logout")
public SaResult logout() {
	StpUtil.logout();
	return SaResult.ok("退出登錄成功");
}

調(diào)用如上方法注銷(xiāo)后,當(dāng)前賬號(hào)所有端將一起下線(xiàn)。

4、單端注銷(xiāo)

如果要只注銷(xiāo)一端,可將配置文件中 is-share 的值配置為 false

sa-token:
	is-share: false

此配置項(xiàng)的含義為:在多人登錄同一賬號(hào)時(shí),是否共用一個(gè) Token。

  • 為 true 時(shí):所有登錄共用一個(gè) Token。
  • 為 false 時(shí):每次登錄新建一個(gè) Token。

此值為 false 后,每次登錄都將返回不同的 Token,與之對(duì)應(yīng)的,調(diào)用 StpUtil.logout() 也只會(huì)注銷(xiāo)掉當(dāng)前的 Token,其他端不受影響。

三、單地登錄

單地登錄的重點(diǎn)是需要改一下 yml 配置文件:

sa-token: 
	is-concurrent: false

is-concurrent 的含義為是否允許同一賬號(hào)并發(fā)登錄:

  • 為 true 時(shí):允許一起登錄。
  • 為 false 時(shí):新登錄擠掉舊登錄。

其它代碼與 [多地登錄](méi) 無(wú)異,當(dāng)我們?cè)趦蓚€(gè)瀏覽器分別登錄同一賬號(hào)時(shí),舊會(huì)話(huà)再次訪問(wèn)系統(tǒng)將會(huì)得到如下提示:

{
	"code": 401,
	"msg": "Token 已被頂下線(xiàn)",
	"data": null
}

在 單地登錄 模式中,不存在注銷(xiāo)策略的問(wèn)題,因?yàn)橥粫r(shí)間內(nèi),一個(gè)賬號(hào)最多在一個(gè)設(shè)備在線(xiàn),只要調(diào)用注銷(xiāo),就必然是全端下線(xiàn)。

四、同端互斥登錄

好了,終于輪到主角出場(chǎng),同端互斥登錄可以讓我們像騰訊QQ一樣,在同一類(lèi)型設(shè)備上只允許單地點(diǎn)登錄,在不同類(lèi)型設(shè)備上允許同時(shí)在線(xiàn)。

那么在 Sa-Token 中如何做到同端互斥登錄呢?

首先如 單地登錄一樣,在配置文件中,將 sa-token.is-concurrent 配置為false,然后調(diào)用登錄等相關(guān)接口時(shí)聲明設(shè)備標(biāo)識(shí)即可:

1、指定設(shè)備標(biāo)識(shí)登錄
StpUtil.login(10001, "PC");    

調(diào)用此方法登錄后,同設(shè)備的會(huì)被頂下線(xiàn)(不同設(shè)備不受影響),再次訪問(wèn)系統(tǒng)時(shí)會(huì)拋出 NotLoginException 異常,場(chǎng)景值=-4

場(chǎng)景值 對(duì)應(yīng)常量 含義說(shuō)明
-1 NotLoginException.NOT_TOKEN 未能從請(qǐng)求中讀取到 Token
-2 NotLoginException.INVALID_TOKEN 已讀取到 Token,但是 Token無(wú)效
-3 NotLoginException.TOKEN_TIMEOUT 已讀取到 Token,但是 Token已經(jīng)過(guò)期
-4 NotLoginException.BE_REPLACED 已讀取到 Token,但是 Token 已被頂下線(xiàn)
-5 NotLoginException.KICK_OUT 已讀取到 Token,但是 Token 已被踢下線(xiàn)

如果第二個(gè)參數(shù)填寫(xiě)null或不填,代表將這個(gè)賬號(hào)id所有在線(xiàn)端踢下線(xiàn),被踢出者再次訪問(wèn)系統(tǒng)時(shí)會(huì)拋出 NotLoginException 異常,場(chǎng)景值=-5

2、查詢(xún)當(dāng)前登錄的設(shè)備標(biāo)識(shí)
StpUtil.getLoginDevice(); 

如果在登錄時(shí)未指定設(shè)備類(lèi)型值,調(diào)用此方法將返回默認(rèn)值:default-device

3、指定設(shè)備端類(lèi)型下線(xiàn)

業(yè)務(wù)場(chǎng)景舉例:在手機(jī)端控制PC端下線(xiàn)(手機(jī)端本身不受影響)

StpUtil.logout(10001, "PC");		
4、全端下線(xiàn)

在調(diào)用 logout 方法時(shí),不填寫(xiě)具體的設(shè)備端類(lèi)型,將默認(rèn)控制所有端一起下線(xiàn)。

StpUtil.logout(10001);		

以上就是 Sa-Token 框架在處理登錄問(wèn)題時(shí)的各種方案,可以看出不管是簡(jiǎn)單的多地登錄還是復(fù)雜的同端互斥登錄,在 Sa-Token 都有完善的解決方案。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-539799.html


參考資料

  • Sa-Token 文檔:https://sa-token.cc
  • Gitee 倉(cāng)庫(kù)地址:https://gitee.com/dromara/sa-token
  • GitHub 倉(cāng)庫(kù)地址:https://github.com/dromara/sa-token

到了這里,關(guān)于使用 Sa-Token 實(shí)現(xiàn)不同的登錄模式:?jiǎn)蔚氐卿洝⒍嗟氐卿?、同端互斥登錄的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • SpringBoot 使用 Sa-Token 完成權(quán)限認(rèn)證

    所謂權(quán)限認(rèn)證,核心邏輯就是判斷一個(gè)賬號(hào)是否擁有指定權(quán)限: 有,就讓你通過(guò)。 沒(méi)有?那么禁止訪問(wèn)! 深入到底層數(shù)據(jù)中,就是每個(gè)賬號(hào)都會(huì)擁有一個(gè)權(quán)限碼集合,框架來(lái)校驗(yàn)這個(gè)集合中是否包含指定的權(quán)限碼。 例如:當(dāng)前賬號(hào)擁有權(quán)限碼集合 [\\\"user-add\\\", \\\"user-delete\\\", \\\"us

    2023年04月25日
    瀏覽(20)
  • 使用 Sa-Token 完成踢人下線(xiàn)功能

    在企業(yè)級(jí)項(xiàng)目中,踢人下線(xiàn)是一個(gè)很常見(jiàn)的需求,如果要設(shè)計(jì)比較完善的話(huà),至少需要以下功能點(diǎn): 可以根據(jù)用戶(hù) userId 踢出指定會(huì)話(huà),對(duì)方再次訪問(wèn)系統(tǒng)會(huì)被提示:您已被踢下線(xiàn),請(qǐng)重新登錄。 可以查詢(xún)出一個(gè)賬號(hào)共在幾個(gè)設(shè)備端登錄,并返回其對(duì)應(yīng)的 Token 憑證,以便后

    2024年02月03日
    瀏覽(23)
  • SpringBoot 使用 Sa-Token 完成路由攔截鑒權(quán)

    在前文,我們?cè)敿?xì)的講述了在 Sa-Token 如何使用注解進(jìn)行權(quán)限認(rèn)證,注解鑒權(quán)雖然方便,卻并不適合所有鑒權(quán)場(chǎng)景。 假設(shè)有如下需求:項(xiàng)目中所有接口均需要登錄認(rèn)證校驗(yàn),只有 “登錄接口” 本身對(duì)外開(kāi)放。 如果我們對(duì)項(xiàng)目所有接口都加上 @SaCheckLogin 注解,會(huì)顯得非常冗余

    2024年02月05日
    瀏覽(22)
  • spring boot +Sa-Token優(yōu)雅的實(shí)現(xiàn)項(xiàng)目鑒權(quán)!

    spring boot +Sa-Token優(yōu)雅的實(shí)現(xiàn)項(xiàng)目鑒權(quán)!

    最近在做登錄、授權(quán)的功能,一開(kāi)始考慮到的是spring boot + spring security,但spring security太重,而我們是輕量級(jí)的項(xiàng)目,所以,spring security不適合我們。 而后考慮spring boot + shiro,但shiro自帶的aop會(huì)影響spring boot的aop,所以,shiro也不適合我們。 后來(lái)瀏覽github時(shí),發(fā)現(xiàn)Sa-Token這個(gè)框

    2024年02月06日
    瀏覽(20)
  • SpringBoot 使用 Sa-Token 完成注解鑒權(quán)功能

    注解鑒權(quán) —— 優(yōu)雅的將鑒權(quán)與業(yè)務(wù)代碼分離。本篇我們將介紹在 Sa-Token 中如何通過(guò)注解完成權(quán)限校驗(yàn)。 Sa-Token 是一個(gè)輕量級(jí) java 權(quán)限認(rèn)證框架,主要解決登錄認(rèn)證、權(quán)限認(rèn)證、單點(diǎn)登錄、OAuth2、微服務(wù)網(wǎng)關(guān)鑒權(quán) 等一系列權(quán)限相關(guān)問(wèn)題。 Gitee 開(kāi)源地址:https://gitee.com/dromar

    2024年02月04日
    瀏覽(18)
  • sa-token多端登陸實(shí)現(xiàn),PC,APP登陸分別設(shè)置token過(guò)期時(shí)間

    sa-token多端登陸實(shí)現(xiàn),PC,APP登陸分別設(shè)置token過(guò)期時(shí)間

    Sa-Token 是一個(gè)輕量級(jí) Java 權(quán)限認(rèn)證框架,主要解決:登錄認(rèn)證、權(quán)限認(rèn)證、單點(diǎn)登錄、OAuth2.0、分布式Session會(huì)話(huà)、微服務(wù)網(wǎng)關(guān)鑒權(quán) 等一系列權(quán)限相關(guān)問(wèn)題。 Sa-Token 目前主要五大功能模塊:登錄認(rèn)證、權(quán)限認(rèn)證、單點(diǎn)登錄、OAuth2.0、微服務(wù)鑒權(quán)。 登錄認(rèn)證 —— 單端登錄、多端

    2024年02月08日
    瀏覽(44)
  • Sa-Token淺談

    Sa-Token淺談

    主要介紹Sa-Token的鑒權(quán)使用以及實(shí)現(xiàn)原理。 官網(wǎng)介紹的非常詳細(xì),主要突出這是一個(gè)輕量級(jí)鑒權(quán)框架的特點(diǎn),詳情可自行訪問(wèn):https://sa-token.dev33.cn/doc.html#/ 旨在簡(jiǎn)單使用,大部分功能均可以在一行代碼內(nèi)實(shí)現(xiàn),這里舉幾個(gè)官網(wǎng)示例: 首先添加依賴(lài): yaml配置文件: 功能圖如下

    2024年02月09日
    瀏覽(25)
  • Sa-Token組件介紹

    Sa-Token組件介紹

    個(gè)人博客:無(wú)奈何楊(wnhyang) 個(gè)人語(yǔ)雀:wnhyang 共享語(yǔ)雀:在線(xiàn)知識(shí)共享 Github:wnhyang - Overview 前文講了Sa-Token介紹與SpringBoot環(huán)境下使用,但是 satoken 最重要的登錄鑒權(quán)直接略過(guò)了,那這篇文章就開(kāi)講,??當(dāng)然不是啦??礃?biāo)題就知道這次要講的是 satoken 組件,為什么這么安排

    2024年01月20日
    瀏覽(28)
  • Sa-Token源碼簡(jiǎn)單閱讀

    Sa-Token源碼簡(jiǎn)單閱讀

    一.權(quán)限登錄模塊包括幾個(gè)基本子模塊: 1.登錄。 實(shí)現(xiàn)方式大致為:先檢驗(yàn)用戶(hù)名密碼是否正確,如正確則在 緩存 中存入用戶(hù)信息(一般必須要有用戶(hù)標(biāo)識(shí)和訪問(wèn)token,或再加一些附加信息如用戶(hù)的角色權(quán)限),再返回訪問(wèn)token給客戶(hù)端。 2.過(guò)濾器,主要通過(guò)客戶(hù)端訪問(wèn)時(shí)帶

    2023年04月26日
    瀏覽(24)
  • mall :sa-token項(xiàng)目源碼解析

    mall :sa-token項(xiàng)目源碼解析

    目錄 一、mall開(kāi)源項(xiàng)目 1.1 來(lái)源 1.2 項(xiàng)目轉(zhuǎn)移 1.3 項(xiàng)目克隆 二、Sa-Toekn框架 2.1 Sa-Token 簡(jiǎn)介 2.2 分布式后端項(xiàng)目的使用流程 2.3 分布式后端項(xiàng)目的使用場(chǎng)景 三、源碼解析 3.1 集成與配置 3.1.1 導(dǎo)入依賴(lài) 3.1.2 添加配置 3.1.3 異常處理 3.1.4 存儲(chǔ)用戶(hù)信息 3.2 登錄認(rèn)證 3.2.1 配置黑白名單

    2024年02月12日
    瀏覽(18)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包