spring boot 前後臺登入怎麼區分

時間 2021-05-11 21:12:42

1樓:孔明

看了幾個答案都沒說到點子上還強答也是醉了。

這個問題和許可權模型沒關係,和是否使用oauth2也沒關係。

真正的問題點在於:你現在是乙個系統裡有兩套賬號需要授權驗證!

而傳統的許可權框架,比如spring security、shiro、jwt等在架構設計時都沒有考慮過這個問題

這些傳統許可權框架的架構設計只會判斷乙個會話是[登入狀態]還是[未登入狀態],但是他們不會判斷這個登入是[前台User的登入],還是[後台Admin的登入]

要解決這個問題,必須有乙個合理的機制將這兩套賬號的授權給區分開,讓它們互不干擾才行,而spring security和shiro並沒有提供這個功能。

sa-token

2樓:

通過不同的URL區分登入型別,配置多個Spring Security Config,將不同的URL分配到不同的Config就可。驗證型別隨意選擇,可以並存

3樓:陳龍

我看了這個問題下已有的回答,都不走心。

題主提到「目前是使用jwt做驗證」,所以問題的核心是JSON Web Token的認證方式,而和Spring Boot沒太大關係。我下面說的內容用在任何伺服器端技術上都一樣,因為JWT和語言、框架無關的一種標準認證方式,大部分伺服器端技術都支援,不限於Spring Boot。

JWT我在另外乙個回答裡介紹過:

現在的前端框架全是通過API獲得資料,如何記錄使用者登入狀態?

JWT的登入流程是這樣的(上面那個答案裡也有這幅圖):

上面的1、2、3、4步驟,下面解釋一下:

使用者提交使用者名稱/密碼給伺服器端的認證API。

伺服器端認證使用者,生成JWT的Token並返回到前端。

前端呼叫任何需要認證的API,都需要帶上上一步獲取到的Token。

伺服器端驗證Token是否合法,然後才呼叫API。

而JWT是由三部分組成的:

上圖,右側的三部分:header,payload,verify signature,分別對應左側不同顏色的三段。

header中的alg是algorithm(簽名演算法),還有type是jwt。

payload中包含但不限於sub,name,admin,還可以有iss(issuer,Token的頒發者),exp(expiration time,過期時間),也可以自己增加其他屬性。但是要注意,為了保證生成的token盡可能短,屬性名都是三個字母。

verify signature,就是用secret和指定的簽名演算法把前兩部分(header和payload)生成簽名,防止第三方篡改。

只要每次請求都能在header裡帶上合法的Token就可以了。比如JWT標準的格式是:

// token就是上圖中左側那三段不同顏色組成的字串

Authorization: Bearer

上面過程是題主問題中前端登入的過程。

那麼伺服器端登入怎麼辦呢?也就是Service A要呼叫Service B的某些需要認證才能呼叫的API。

上面的過程,其實1、2不是必須的。只要你有合法Token就可以,這個Token沒必要是被訪問的Service B頒發的!Service A可以自己給自己頒發!

前提是大家都共享同乙個Secret!

而在微服務環境下,問題更好處理了,因為服務之間的呼叫是常事。伺服器端的Secret一般是放在配置中心(Configration Center)的。看下面Spring 官網這幅圖:

就是左下角的config dashboard。所有微服務啟動的時候,都會從這裡拿到配置項,就包括伺服器端統一的Secret。

那麼產生了另外乙個問題,題主也提到了,就是如何區分前端登入和伺服器端登入?

就看上面payload裡面的iss,就是Token的頒發者。

Service B的前端獲取的Token,iss是Service B,換句話說就是Service B給前端頒發的Token。Service A自己生成的Token,iss是Service A自己,就是Service A自己給自己頒發Token。

每次API請求,解析Token之後,看一下iss就可以區分前端登入和伺服器端登入了。

4樓:think123

前後臺登入你訪問不同的url即可呀。

比如你前台的登入可以使用/user/login後台的登入可以使用/admin/login來區分從你的表述看,前後臺用到的表最好分開,保持資源隔離。

至於是否要用到oauth2得看你是否有這方面的需求。

RBAC不僅僅是兩個表,使用者-角色-許可權都是三個表了,有些可能還要結合menu來使用,所以在設計的時候盡量要保證分離,至於框架oauth2或者shiro都可以

前後端分離,前端如何判斷登入失效?

IT老魁 首先token失效跟403稍微分開看 403是乙個http返回的狀態碼,表示訪問的資源被禁止訪問,沒有許可權訪問 token失效這個token是你自己程式控制的,當前端訪問後端資源的時候,後端根據前端傳遞的引數或者token的id或者session id等資訊判斷登入時候有效,如果失效就禁...

一套前後臺ui需要多久設計完

視覺客運營總監 少則一周,多則乙個月 看具體要求 通常不是需要多久,而是專案計畫多久完成。人手不夠可以外包或者臨時團隊增加人手。在現有基礎上做優化省去了很多專案定義,需求,資訊架構等方面溝通的時間成本。UI介面設計製圖相對簡單多了。UI設計作品集 成都喜望軟體 這個問題還是需要看這款B端產品的功能和...

前後端分離,後台返回的資料前端沒法寫,怎麼辦?

solZ 可以使用其他工具,來規定資料格式,比如我原來在一家遊戲公司實習時,他們使用Protobu,先規定好資料格式 然後前後端根據規定的資料格式,填充資料 老藍人 作為乙個全棧,我想對這個phper說,you can you up,no can no bb。最好的結果是他幫你做了,多好。 小陳 O...