sso單點登入:
單點登入一般常用的有三種情況
第一種方式:session廣播機制
第二種方式:採用cookie + redis 來實現
思路:採用redis來生成乙個隨機值的 key,value則存放使用者資訊資料,然後將redis生成的key放入到cookie中,在當前專案訪問其他模組的時候,傳送的請求裡面帶著cookie,在接受端的模組中獲取請求中的cookie值,找到對應的key值,然後再去redis中查詢,是否存在資料,如果存在則表明已經登入。
第三種方式:採用token方式實現
思路:在專案中的登入模組進行登入後,按照某種規則生成字串,把登入之後的使用者資訊包含到生成的字串中,然後將字串返回。其中包含兩種方式:一是可以把字串通過cookie返回,二是可以將字串通過位址列返回兩種方式。
當我們再去訪問其他的模組的時候,每次訪問的時候位址列帶著生成的字串,然後再訪問的模組裡面獲取位址列的字串,根據字串獲取使用者資訊,如果能獲取到則表明該使用者已經登入了。
token字串是如何生成的?
採用jwt生成token字串
jwt生成的字串由三個部分組成:第一部分:jwt頭資訊 第二部分:有效載荷(包含使用者資訊) 第三部分:簽名雜湊
登入具體流程:
1.呼叫介面返回token字串
2.將返回的字串存放到cookie中
3.建立前端***--判斷cookie中是否有token字串,如果有的話,將token字串放入到header中(請求頭中)
4.根據token字串呼叫介面,返回使用者資訊,為了首頁顯示使用者資訊,然後將呼叫介面返回的使用者資訊存放到cookie中。
oauth2:它是一種特定問題的解決方案。主要解決:開放系統間授權和分布式訪問
它的解決方案是採用了令牌機制,按照一定規則生成字串,字串中要包含使用者資訊。
可以說oauth2就像乙個介面一樣,它只是指定要按照某鐘規則生成字串,而沒有給出具體的生成字串的策略,而jwt則是它的具體實現,能夠生成具體的字串,並且字串中包含了使用者資訊。
從賬戶底層邏輯思考註冊 登入
文 十一筆 注 註冊 登入幾乎是每乙個產品都會有的基礎功能,在專門研究了一段時間後,發現雖然註冊 登入的體系已經非常成熟了,但是裡面還是有著許多坑。所以特別寫了一篇文章來記載這一段時間的一些收穫。需要特別說明的是 維基上這麼解釋 使用者賬號 使用者可以通過賬號向系統服務進行身份驗證,並獲取相關許可權...
登入的基本邏輯
登入的基本邏輯 1,驗證賬號密碼的正確性 與資料庫相匹配的 string sql select count from 表名 where pwd and ac 單值結果 0 1 判斷是否正確,有一條結果返回。using system.data.sqlclient public static strin...
使用者註冊登入 和 資料寫入檔案的註冊登入
class user def init self,username,password self.username username self.password password class account def init self self.user list 目的是儲存使用者資訊 pass de...