宅男在线永久免费观看网直播,亚洲欧洲日产国码无码久久99,野花社区在线观看视频,亚洲人交乣女bbw,一本一本久久a久久精品综合不卡

全部
常見(jiàn)問(wèn)題
產(chǎn)品動(dòng)態(tài)
精選推薦

詳解token已過(guò)期含義及解決方 token過(guò)期是否需要重新登錄

管理 管理 編輯 刪除

詳解token已過(guò)期含義及解決方 token過(guò)期是否需要重新登錄Web應(yīng)用和用戶的身份驗(yàn)證息息相關(guān),從單一服務(wù)器架構(gòu)到分布式服務(wù)架構(gòu)再到微服務(wù)架構(gòu),用戶安全認(rèn)證和授權(quán)的機(jī)制也一直在演進(jìn),下文對(duì)各個(gè)架構(gòu)下的認(rèn)證機(jī)制做個(gè)總結(jié)。單一服務(wù)器架構(gòu)該架


Web應(yīng)用和用戶的身份驗(yàn)證息息相關(guān),從單一服務(wù)器架構(gòu)到分布式服務(wù)架構(gòu)再到微服務(wù)架構(gòu),用戶安全認(rèn)證和授權(quán)的機(jī)制也一直在演進(jìn),下文對(duì)各個(gè)架構(gòu)下的認(rèn)證機(jī)制做個(gè)總結(jié)。

單一服務(wù)器架構(gòu)

該架構(gòu)下后端只有一臺(tái)服務(wù)器提供服務(wù)。

2d0f4202305191520308828.png

認(rèn)證授權(quán)流程:

1.Web應(yīng)用中設(shè)置攔截器對(duì)所有請(qǐng)求進(jìn)行攔截,如果校驗(yàn)不通過(guò)則跳轉(zhuǎn)登陸重新認(rèn)證

2.客戶端發(fā)起認(rèn)證請(qǐng)求,傳入用戶名密碼

3.通過(guò)驗(yàn)證后,應(yīng)用在服務(wù)器上將用戶信息存入session中,并將session id返回給客戶端

4.客戶端將session id存在本地cookie或local storage中,再次訪問(wèn)時(shí)傳入session id

5.Web應(yīng)用根據(jù)session id對(duì)比服務(wù)器的session數(shù)據(jù),確認(rèn)用戶身份

適合場(chǎng)景

這種模式只適合單服務(wù)器的場(chǎng)景

常用實(shí)現(xiàn)

shiro ;自定義注解 + 攔截器/AOP方案;filter方案等

缺陷

如果是分布式服務(wù)或跨域體系架構(gòu)的系統(tǒng)則會(huì)出現(xiàn)session無(wú)法共享的問(wèn)題。

如何解決

解決方案有兩種,第一種是將session統(tǒng)一存放,實(shí)現(xiàn)分布式session共享,第二種方案是客戶端生成token

分布式服務(wù)架構(gòu)

分布式服務(wù)架構(gòu)下,后端的服務(wù)器由一臺(tái)變成了多臺(tái)。

505b5202305191523283864.png

Session共享方案

認(rèn)證授權(quán)流程:

1.使用nginx做負(fù)載均衡,多臺(tái)web應(yīng)用

2.客戶端發(fā)起認(rèn)證請(qǐng)求,根據(jù)策略到其中一臺(tái)web

3.通過(guò)驗(yàn)證后,服務(wù)端將用戶的信息存入持久化層,例如redis緩存數(shù)據(jù)庫(kù),再生成token令牌

4.并將生成的token返回客戶端,存入客戶端緩存。

5.客戶端再次訪問(wèn)web,根據(jù)策略路由到其中一臺(tái),web應(yīng)用查詢持久化層,根據(jù)帶入的token查詢用戶登陸信息,確認(rèn)身份。

適合場(chǎng)景

并發(fā)量不高的分布式應(yīng)用

常用實(shí)現(xiàn)

shiro ;自定義注解 + 攔截器/AOP方案;filter方案等

缺陷

1、這種方案的缺陷在于依賴(lài)于持久層的數(shù)據(jù)庫(kù)如redis,會(huì)有單點(diǎn)風(fēng)險(xiǎn),如果持久層失敗,整個(gè)認(rèn)證體系都會(huì)掛掉;

2、每一次調(diào)用都需要訪問(wèn)持久化層進(jìn)行驗(yàn)證,會(huì)給持久化層造成壓力,在高并發(fā)場(chǎng)景,持久化層容易成為瓶頸;

如何解決

持久層的數(shù)據(jù)庫(kù)如redis做高可用和集群。

客戶端token方案

d3b8f202305191524405805.png

認(rèn)證授權(quán)流程:

1.客戶端發(fā)起認(rèn)證請(qǐng)求,根據(jù)策略到其中一臺(tái)web

2.通過(guò)驗(yàn)證后,服務(wù)端將用戶登陸信息封裝成token(token本身可以自解釋?zhuān)┓祷亟o客戶端,不存儲(chǔ)在服務(wù)端

3.客戶端將返回的完整信息存入緩存。

4.客戶端再次訪問(wèn)web,根據(jù)策略路由到其中一臺(tái),帶入登陸信息,服務(wù)端根據(jù)信息確認(rèn)身份。

適合場(chǎng)景

優(yōu)勢(shì)在于服務(wù)端不保存用戶會(huì)話數(shù)據(jù),服務(wù)端無(wú)狀態(tài),不用去持久層查詢從而增加了效率,適合一次性驗(yàn)證、restful api 的無(wú)狀態(tài)認(rèn)證、并發(fā)量較高的分布式應(yīng)用等

常用實(shí)現(xiàn)

jwt

缺陷

token一旦下發(fā)便不受服務(wù)端控制,如果發(fā)生token泄露,服務(wù)器也只能任其蹂躪,在其未過(guò)期期間不能有任何措施,同時(shí)存在以下兩個(gè)問(wèn)題:

1、失效問(wèn)題,因?yàn)閠oken是存放在客戶端的,服務(wù)端無(wú)法主動(dòng)讓token失效,比如踢人下線、用戶權(quán)限發(fā)生變化等場(chǎng)景就實(shí)現(xiàn)不了

2、續(xù)簽問(wèn)題,token 有效期一般都建議設(shè)置的不太長(zhǎng), token 過(guò)期后用戶需要重新登錄,導(dǎo)致用戶需要頻繁登錄

如何解決

針對(duì)失效問(wèn)題:

① 將 token 存入內(nèi)存數(shù)據(jù)庫(kù):將 token 存入 DB 或redis中。如果需要讓某個(gè) token 失效就直接從 redis 中刪除這個(gè) token 即可。但是,這樣會(huì)導(dǎo)致每次使用 token 發(fā)送請(qǐng)求都要先從redis中查詢 token 是否存在的步驟,而且違背了 JWT 的無(wú)狀態(tài)原則,不可取。

② 黑名單機(jī)制:使用內(nèi)存數(shù)據(jù)庫(kù)比如 redis 維護(hù)一個(gè)黑名單,如果想讓某個(gè) token 失效的話就直接將這個(gè) token 加入到 黑名單 即可。然后,每次使用 token 進(jìn)行請(qǐng)求的話都會(huì)先判斷這個(gè) token 是否存在于黑名單中。

針對(duì)續(xù)簽問(wèn)題:

① 類(lèi)似于 Session 認(rèn)證中的做法: 假設(shè)服務(wù)端給的 token 有效期設(shè)置為30分鐘,服務(wù)端每次進(jìn)行校驗(yàn)時(shí),如果發(fā)現(xiàn) token 的有效期馬上快過(guò)期了,服務(wù)端就重新生成 token 給客戶端。客戶端每次請(qǐng)求都檢查新舊token,如果不一致,則更新本地的token。這種做法的問(wèn)題是僅僅在快過(guò)期的時(shí)候請(qǐng)求才會(huì)更新 token ,對(duì)客戶端不是很友好。每次請(qǐng)求都返回新 token :這種方案的的思路很簡(jiǎn)單,但是,很明顯,開(kāi)銷(xiāo)會(huì)比較大。

② 用戶登錄返回兩個(gè) token :第一個(gè)是 acessToken ,它的過(guò)期時(shí)間比較短,不如1天;另外一個(gè)是 refreshToken 它的過(guò)期時(shí)間更長(zhǎng)一點(diǎn)比如為10天。客戶端登錄后,將 accessToken和refreshToken 保存在客戶端本地,每次訪問(wèn)將 accessToken 傳給服務(wù)端。服務(wù)端校驗(yàn) accessToken 的有效性,如果過(guò)期的話,就將 refreshToken 傳給服務(wù)端。如果 refreshToken 有效,服務(wù)端就生成新的 accessToken 給客戶端。否則,客戶端就重新登錄即可。

說(shuō)明:JWT 最適合的場(chǎng)景是不需要服務(wù)端保存用戶狀態(tài)的場(chǎng)景,但是如果考慮到 token 注銷(xiāo)和 token 續(xù)簽的場(chǎng)景話,沒(méi)有特別好的解決方案,大部分解決方案都給 token 加上了狀態(tài),這就有點(diǎn)類(lèi)似 Session 認(rèn)證了。

微服務(wù)架構(gòu)

微服務(wù)架構(gòu)下服務(wù)端根據(jù)業(yè)務(wù)拆分為多個(gè)服務(wù),除了公司內(nèi)部服務(wù)外,外部客戶或者第三方也通過(guò)api網(wǎng)關(guān)統(tǒng)一轉(zhuǎn)發(fā)請(qǐng)求,在這個(gè)階段系統(tǒng)需要提供跨系統(tǒng)單點(diǎn)登錄、第三方授權(quán)登錄等基礎(chǔ)能力。在這種架構(gòu)下后端建立單獨(dú)的認(rèn)證授權(quán)中心。 目前實(shí)現(xiàn)統(tǒng)一身份認(rèn)證和授權(quán)的技術(shù)手段較多,總體可以歸納為以下幾類(lèi)。

傳統(tǒng)的 Cookie + Session 解決方案 ,有狀態(tài)會(huì)話模式

認(rèn)證授權(quán)流程:

同分布式服務(wù)架構(gòu)中的“Session共享方案”

適合場(chǎng)景:

同分布式服務(wù)架構(gòu)中的“Session共享方案”

常用實(shí)現(xiàn):

同分布式服務(wù)架構(gòu)中的“Session共享方案”

缺陷:

分布式 Session 是老牌的成熟解決方案,但因其狀態(tài)化通信的特性與微服務(wù)提倡的API導(dǎo)向無(wú)狀態(tài)通信相互違背,且共享式存儲(chǔ)存在安全隱患,因此微服務(wù)一般不太采用

JWT+網(wǎng)關(guān)撤銷(xiāo)令牌方案,無(wú)狀態(tài)交互模式

認(rèn)證授權(quán)流程:

同分布式服務(wù)架構(gòu)中的“客戶端token方案”,只是在該基礎(chǔ)上,加上API網(wǎng)關(guān)令牌失效和令牌續(xù)簽的機(jī)制,參考分布式服務(wù)架構(gòu)中的“Session共享方案”的“如何解決”部分。

適合場(chǎng)景:

同分布式服務(wù)架構(gòu)中的“客戶端token方案”

常用實(shí)現(xiàn):

同分布式服務(wù)架構(gòu)中的“客戶端token方案”

缺陷:

同分布式服務(wù)架構(gòu)中的“客戶端token方案”

JWT + OAutstrong.0 +CAS方案

CAS是單點(diǎn)登錄的解決方案,單點(diǎn)登錄(Single Sign On),簡(jiǎn)稱(chēng)為 SSO,是目前比較流行的企業(yè)業(yè)務(wù)整合的解決方案之一。SSO的定義是在多個(gè)應(yīng)用系統(tǒng)中,用戶只需要登錄一次就可以訪問(wèn)所有相互信任的應(yīng)用系統(tǒng)。CAS共涉及角色有:CAS Client(下文提到的系統(tǒng)A等)、User、CAS Server(認(rèn)證中心)。CAS 是一個(gè)認(rèn)證框架,其本身定義了一套靈活完整的認(rèn)證流程,但其兼容主流的認(rèn)證和授權(quán)協(xié)議如 OAutstrong、SAML、OpenID 等,因此一般采用 CAS + OAutstrong 的方案實(shí)現(xiàn) SSO 和授權(quán)登錄。

認(rèn)證授權(quán)流程:

1.用戶訪問(wèn)系統(tǒng)A;

2.系統(tǒng)A發(fā)現(xiàn)用戶沒(méi)有登錄,也沒(méi)有ticket,重定向到認(rèn)證中心;有ticket跳轉(zhuǎn) 第7步;

3.認(rèn)證中心發(fā)現(xiàn)用戶并未登錄,展示登錄頁(yè)面;

4.用戶登錄;

5.認(rèn)證中心登錄成功,帶著生成的ticket,重定向到之前的系統(tǒng)A頁(yè)面;

6.系統(tǒng)A檢查登錄,還是未登錄,但存在ticket。系統(tǒng)A帶著ticket和認(rèn)證中心進(jìn)行校驗(yàn);

7.認(rèn)證中心返回對(duì)應(yīng)的用戶名;

8.系統(tǒng)A檢查返回的用戶名是否只有一個(gè)且不為空,若是,則返回給用戶指定的資源信息;若不是,則跳轉(zhuǎn) 第2步。

常用實(shí)現(xiàn)

spring security + CAS

OAutstrong.0協(xié)議考慮到了微服務(wù)認(rèn)證中的方方面面,提供的多種授權(quán)模式。這種方案的優(yōu)點(diǎn)是安全性好,是業(yè)內(nèi)成熟的給第三方提供授權(quán)登錄解決方案,但是實(shí)現(xiàn)成本和復(fù)雜度高。 OAutstrong.0提供了4種授權(quán)模式,能夠適應(yīng)多種場(chǎng)景,作為基于令牌的安全框架,可以廣泛用于需要統(tǒng)一身份認(rèn)證和授權(quán)的場(chǎng)景。 在 OAutstrong.0 的實(shí)施過(guò)程中,一般會(huì)采用 JWT 作為令牌的主要標(biāo)準(zhǔn)。以文章分享舉個(gè)例子,你在(登錄后)瀏覽某論壇時(shí),遇到了一篇好文章,想要分享給大家時(shí),你需要登錄(掃碼或者登錄用戶名密碼)第三方賬戶如來(lái)完成分享。

OAutstrong.0還有個(gè)替代方案,OIDC,它是OpenID Connect的簡(jiǎn)稱(chēng),OIDC=(Identity, Authentication) + OAuth 2.0。它在OAutstrong上構(gòu)建了一個(gè)身份層,是一個(gè)基于OAutstrong協(xié)議的身份認(rèn)證標(biāo)準(zhǔn)協(xié)議。暫時(shí)沒(méi)研究,有興趣的朋友可以查查。

認(rèn)證授權(quán)流程:

1、在點(diǎn)擊分享鏈接時(shí),主服務(wù)器會(huì)直接(接口)請(qǐng)求第三方服務(wù)器,第三方服務(wù)器會(huì)校驗(yàn)主服務(wù)器上的用戶此時(shí)是否授權(quán)給自己(第三方);

2、沒(méi)有授權(quán)信息,用戶登錄(掃描或者密碼)。

3、主服務(wù)器拿著用戶的登錄信息去第三方確認(rèn)認(rèn)證授權(quán)(密碼是否正確、是否授權(quán))。

4、認(rèn)證失敗,密碼錯(cuò)誤。(重新登錄)

5、認(rèn)證成功(確認(rèn)授權(quán)),第三方認(rèn)證服務(wù)會(huì)返回的授權(quán)碼。

6、主服務(wù)器帶著授權(quán)碼請(qǐng)求第三方資源服務(wù)器,第三方資源服務(wù)器會(huì)返回指定的URI(分享界面)。

7、用戶操作分享操作(填寫(xiě)自己的話語(yǔ)),點(diǎn)擊分享按鈕完成。

常用實(shí)現(xiàn)

spring security +OAutstrong.0

OAutstrong.0提供了4種授權(quán)模式,如下:

授權(quán)碼模式

授權(quán)碼模式相對(duì)其他三個(gè)模式來(lái)說(shuō)是功能最完整,流程最安全嚴(yán)謹(jǐn)?shù)氖跈?quán)方式。它的特點(diǎn)是通過(guò)客戶端的后臺(tái)服務(wù)器與服務(wù)提供商的認(rèn)證服務(wù)器進(jìn)行交互:

017a5202305191525352738.png

A. 用戶訪問(wèn)客戶端,客戶端將用戶導(dǎo)向認(rèn)證服務(wù)器,需要攜帶客戶端ID憑證和重定向URI。

B. 用戶選擇是否給予客戶端授權(quán)。

C. 假設(shè)用戶給予授權(quán),認(rèn)證服務(wù)器將用戶導(dǎo)向事先指定的重定向URI,同時(shí)附上一個(gè)授權(quán)碼。

D. 客戶端收到授權(quán)碼后,攜帶事先指定的重定向URI和授權(quán)碼向認(rèn)證服務(wù)器申請(qǐng)令牌。

E. 認(rèn)證服務(wù)器核對(duì)授權(quán)碼和重定向URI,確認(rèn)無(wú)誤后,向客戶端頒發(fā)訪問(wèn)令牌(access token)和刷新令牌(refresh token)。

這里的resource owner代表客戶,user-agent代表客戶使用的訪問(wèn)工具如瀏覽器或App,client指第三方客戶端

簡(jiǎn)化模式

簡(jiǎn)化模式不通過(guò)服務(wù)端程序來(lái)完成,比授權(quán)碼模式減少了“授權(quán)碼”這個(gè)步驟,直接由瀏覽器發(fā)送請(qǐng)求獲取令牌,令牌對(duì)訪問(wèn)者是可見(jiàn)的,且客戶端不需要認(rèn)證,這種模式一般用于無(wú)后端應(yīng)用,如手機(jī)/桌面客戶端程序、瀏覽器插件

e4865202305191526125398.png

A. 用戶訪問(wèn)客戶端,客戶端將用戶導(dǎo)向認(rèn)證服務(wù)器,需要攜帶客戶端ID憑證和重定向URI。

B. 用戶選擇是否給予客戶端授權(quán)。

C. 假設(shè)用戶給予授權(quán),認(rèn)證服務(wù)器將用戶導(dǎo)向事先指定的重定向URI,并在URI的Hash部分包含了訪問(wèn)令牌(Fragment)。

D. 瀏覽器向資源服務(wù)器發(fā)出請(qǐng)求,其中不包含事先收到的Hash部分(Fragment)。

E. 資源服務(wù)器返回一段腳本,其中包含的代碼可以獲取Hash部分中的令牌。

F. 瀏覽器執(zhí)行事先獲取的腳本,提取出令牌

G. 瀏覽器將令牌發(fā)送給客戶端。

密碼模式

密碼模式中,用戶向客戶端提供用戶名和密碼,客戶端使用這些信息,直接向認(rèn)證服務(wù)器索要授權(quán)。這種模式違背了前面提到的微服務(wù)安全要解決的問(wèn)題(不暴露用戶名和密碼),但是在一些用戶對(duì)客戶端高度信任的情況下,例如公司內(nèi)部軟件間的授權(quán)下,使用這種模式也是適用的

b437b202305191527453342.png

A. 用戶向客戶端提供用戶名和密碼。

B. 客戶端將用戶名和密碼發(fā)送給認(rèn)證服務(wù)器,向認(rèn)證服務(wù)器索要令牌。

C. 認(rèn)證服務(wù)器確認(rèn)無(wú)誤后,向客戶端提供訪問(wèn)令牌。

客戶端模式

客戶端模式是客戶端以自己的名義去授權(quán)服務(wù)器申請(qǐng)授權(quán)令牌,并不是完全意義上的授權(quán)。一般不適用這種模式

b8bd9202305191528149175.png

A. 客戶端向認(rèn)證服務(wù)器進(jìn)行身份認(rèn)證,并要求獲取訪問(wèn)令牌。

B. 認(rèn)證服務(wù)器確認(rèn)無(wú)誤后,向客戶端提供訪問(wèn)令牌。

刷新令牌

如果用戶訪問(wèn)的時(shí)候,客戶端的"訪問(wèn)令牌"已經(jīng)過(guò)期,則需要使用"更新令牌"申請(qǐng)一個(gè)新的訪問(wèn)令牌

4929a202305191530371081.png

A. 客戶端向認(rèn)證服務(wù)器進(jìn)行身份認(rèn)證,并要求獲取訪問(wèn)令牌。

B. 認(rèn)證服務(wù)器確認(rèn)無(wú)誤后,返回訪問(wèn)令牌和一個(gè)刷新令牌。

C. 客戶端通過(guò)訪問(wèn)令牌訪問(wèn)受保護(hù)資源。

D. 如果訪問(wèn)令牌未過(guò)期,則向客戶端提供資源服務(wù)。

E. 客戶端通過(guò)訪問(wèn)令牌訪問(wèn)受保護(hù)資源。

F. 如果訪問(wèn)令牌過(guò)期,受保護(hù)資源服務(wù)器返回Invalid Token Error。

G. 客戶端得到上方的錯(cuò)誤后,通過(guò)刷新令牌向授權(quán)服務(wù)器申請(qǐng)一個(gè)新的訪問(wèn)令牌。

H. 認(rèn)證服務(wù)器確認(rèn)無(wú)誤后,返回訪問(wèn)令牌和一個(gè)刷新令牌。


【版權(quán)聲明】CRMEB社區(qū)提醒您:請(qǐng)?jiān)跒g覽本網(wǎng)站關(guān)于《詳解token已過(guò)期含義及解決方 token過(guò)期是否需要重新登錄》信息時(shí),請(qǐng)您務(wù)必閱讀并理解本聲明。本站部分內(nèi)容以及圖片來(lái)源于商家投稿和網(wǎng)絡(luò)轉(zhuǎn)載,如網(wǎng)站發(fā)布的有關(guān)的信息侵犯到您的權(quán)益,請(qǐng)及時(shí)與我們?nèi)〉寐?lián)系,郵箱:[email protected],我們會(huì)尊重您的決定并當(dāng)天作出刪除處理。


請(qǐng)登錄后查看

CRMEB-慕白寒窗雪 最后編輯于2023-05-19 15:31:23

快捷回復(fù)
回復(fù)
回復(fù)
回復(fù)({{post_count}}) {{!is_user ? '我的回復(fù)' :'全部回復(fù)'}}
排序 默認(rèn)正序 回復(fù)倒序 點(diǎn)贊倒序

{{item.user_info.nickname ? item.user_info.nickname : item.user_name}} LV.{{ item.user_info.bbs_level || item.bbs_level }}

作者 管理員 企業(yè)

{{item.floor}}# 同步到gitee 已同步到gitee {{item.is_suggest == 1? '取消推薦': '推薦'}}
{{item.is_suggest == 1? '取消推薦': '推薦'}}
沙發(fā) 板凳 地板 {{item.floor}}#
{{item.user_info.title || '暫無(wú)簡(jiǎn)介'}}
附件

{{itemf.name}}

{{item.created_at}}  {{item.ip_address}}
打賞
已打賞¥{{item.reward_price}}
{{item.like_count}}
{{item.showReply ? '取消回復(fù)' : '回復(fù)'}}
刪除
回復(fù)
回復(fù)

{{itemc.user_info.nickname}}

{{itemc.user_name}}

回復(fù) {{itemc.comment_user_info.nickname}}

附件

{{itemf.name}}

{{itemc.created_at}}
打賞
已打賞¥{{itemc.reward_price}}
{{itemc.like_count}}
{{itemc.showReply ? '取消回復(fù)' : '回復(fù)'}}
刪除
回復(fù)
回復(fù)
查看更多
打賞
已打賞¥{{reward_price}}
8012
{{like_count}}
{{collect_count}}
添加回復(fù) ({{post_count}})

相關(guān)推薦

快速安全登錄

使用微信掃碼登錄
{{item.label}} 加精
{{item.label}} {{item.label}} 板塊推薦 常見(jiàn)問(wèn)題 產(chǎn)品動(dòng)態(tài) 精選推薦 首頁(yè)頭條 首頁(yè)動(dòng)態(tài) 首頁(yè)推薦
取 消 確 定
回復(fù)
回復(fù)
問(wèn)題:
問(wèn)題自動(dòng)獲取的帖子內(nèi)容,不準(zhǔn)確時(shí)需要手動(dòng)修改. [獲取答案]
答案:
提交
bug 需求 取 消 確 定
打賞金額
當(dāng)前余額:¥{{rewardUserInfo.reward_price}}
{{item.price}}元
請(qǐng)輸入 0.1-{{reward_max_price}} 范圍內(nèi)的數(shù)值
打賞成功
¥{{price}}
完成 確認(rèn)打賞

微信登錄/注冊(cè)

切換手機(jī)號(hào)登錄

{{ bind_phone ? '綁定手機(jī)' : '手機(jī)登錄'}}

{{codeText}}
切換微信登錄/注冊(cè)
暫不綁定
CRMEB客服

CRMEB咨詢熱線 咨詢熱線

400-8888-794

微信掃碼咨詢

CRMEB開(kāi)源商城下載 源碼下載 CRMEB幫助文檔 幫助文檔
返回頂部 返回頂部
CRMEB客服