国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

登錄那些事兒

layman / 852人閱讀

摘要:假如是在同一個(gè)域名下,例如與,因?yàn)樵试S設(shè)置到二級(jí)域名下,所以和是可以共享的,用戶的信息可以通過可逆加密放在二級(jí)域名下的,并且設(shè)置,就可以一站登錄,站站登錄。

原文鏈接:BlueSun | 登錄那些事兒

也不知道是什么原因,剛開始不久的職業(yè)生涯,在技術(shù)這條路走著走著,和「登錄」總是有著一個(gè)不解之緣。還記得當(dāng)初學(xué)習(xí)Web編程的時(shí)候么?不管是Java、.Net、PHP,繼經(jīng)典「Hello World」之后,要寫的很有可能就是「登錄」功能。至今「登錄」的問題還是讓我心中一萬只草泥馬奔過。
下面,給分享一下各種「登錄」相關(guān)的需求

普通的登錄

這個(gè)是極其普通的登錄需求,要的就是一個(gè)登錄頁面,輸入賬號(hào)密碼,提交Form表單,后端查詢數(shù)據(jù)庫對(duì)應(yīng)用戶名的密碼,匹配正確則把用戶記錄到Session,不正確則返回錯(cuò)誤。
這種登錄,在上學(xué)的時(shí)候,也許敬愛的老師就已經(jīng)教過你了。
但可能他沒有教你的是,密碼需要hash加密,session為什么可以記錄登錄用戶的原理。

密碼Hash
密碼hash,就是存進(jìn)數(shù)據(jù)庫的密碼是一串密文,密文是明文密碼通過不可逆算法得出的。在Nodejs中,你可以使用bcryptjs,它提供了hash以及對(duì)應(yīng)的compare方法,非常適合用于密碼的加密和對(duì)比。

Session原理
Session的原理其實(shí)還是依賴了Cookie,所以Cookie才是記錄用戶憑證的真理。它的原理大概是醬紫的:服務(wù)器端維護(hù)一個(gè)session的表,這個(gè)表的每一條記錄存的就是與某一個(gè)客戶端的會(huì)話,會(huì)話會(huì)有過期時(shí)間,過期的會(huì)話會(huì)被清理。然后這個(gè)會(huì)話,會(huì)有一個(gè)對(duì)應(yīng)的id,一般是一串長長的看不懂的字符串,然后這個(gè)字符串會(huì)被存儲(chǔ)在客戶端的cookie中,每一次請(qǐng)求服務(wù)器端都會(huì)帶上這個(gè)cookie,服務(wù)器端就知道訪問的就是哪個(gè)客戶端了。
欲知更多有關(guān)「Session原理」請(qǐng)點(diǎn)擊傳送門:Session原理

使用獨(dú)立登錄系統(tǒng)

應(yīng)項(xiàng)目需要,登錄邏輯需要獨(dú)立出來做成一個(gè)系統(tǒng),就是另外一個(gè)項(xiàng)目。與原來的主站不是在同一個(gè)項(xiàng)目中了。一個(gè)域名是 www.site.com,一個(gè)則是passport.site.com了。要在不同的域名下進(jìn)行登錄,一般的方法是www.site.com/login 跳轉(zhuǎn)到 passport.site.com/login,passport這邊是一個(gè)登錄頁面,用戶輸入賬號(hào)密碼登錄成功之后,passport會(huì)通過帶著一個(gè)可逆加密的包含用戶信息的token,重定向到www.site.com提供的回調(diào)處理地址,然后進(jìn)行解密,匹配正確,則登錄用戶。
要注意的是,這里的加密的信息需要包含一個(gè)時(shí)間戳,接收方需要認(rèn)證這個(gè)時(shí)間戳,過期登錄失敗。避免token被竊取,被無限登錄site系統(tǒng)。

單點(diǎn)登錄

單點(diǎn)登錄需要實(shí)現(xiàn)的需求,說白了就是在站點(diǎn)A的登錄了,那么用戶就自動(dòng)在站點(diǎn)B、站點(diǎn)C、站點(diǎn)E、F、G登錄。
這又分兩種情況,A站點(diǎn)和B站點(diǎn)是否在同一個(gè)二級(jí)域名下。
假如是在同一個(gè)域名下,例如siteA.site.comsiteB.site.com,因?yàn)閏ookie允許設(shè)置到二級(jí)域名下.site.com,所以siteA和siteB是可以共享cookie的,用戶的信息可以通過可逆加密放在二級(jí)域名下的cookie,并且設(shè)置http only,就可以一站登錄,站站登錄。
而如果A站點(diǎn)和B站點(diǎn)不在同一二級(jí)域名下,例如www.siteA.comwww.siteB.com,他們就無法通過共享cookie的方式共享用戶信息,所以需要用到j(luò)sonp的方式,用戶在siteA登錄之后,提供一個(gè)jsonp接口獲取加密的用戶信息,siteB訪問這個(gè)jsonp獲取加密信息。達(dá)到共享用戶狀態(tài)的效果。
欲知更多有關(guān)「單點(diǎn)登錄」請(qǐng)點(diǎn)擊傳送門:單點(diǎn)登錄的三種實(shí)現(xiàn)方式

OAuth2.0登錄

這就比較普遍了,現(xiàn)在隨隨便便做個(gè)網(wǎng)站,都接入「微信登錄」、「微博登錄」、「豆瓣登錄」、「QQ登錄」、「Github登錄」、@^&@%#^%^@%&%@........
這些統(tǒng)一叫做:「第三方登錄」。
第三方登錄都是實(shí)現(xiàn)了OAuth2.0協(xié)議的,流程大概是醬紫的:
第三方提供一個(gè)登錄入口,也就是第三方域名下的登錄頁面。主站需要登錄的時(shí)候,引導(dǎo)用戶重定向到第三方的登錄頁面,用戶輸入賬號(hào)密碼之后,登錄第三方系統(tǒng),第三方系統(tǒng)匹配帳號(hào)成功之后,帶上一個(gè)code到主站的回調(diào)地址,主站接收到code,短時(shí)間內(nèi)拿著code請(qǐng)求第三方提供獲取長期憑證的接口(因?yàn)閏ode有一個(gè)比較短的過期時(shí)間),這個(gè)長期憑證叫access_token,獲取之后就把這個(gè)access_token存到數(shù)據(jù)庫中,請(qǐng)求一些第三方提供的API,需要用到這個(gè)access_token,因?yàn)檫@個(gè)token就是記錄用戶在第三方系統(tǒng)的一個(gè)身份憑證。
一些系統(tǒng),在獲取access_token的時(shí)候,還會(huì)返回一個(gè)副參數(shù)refresh_token,因?yàn)?b>access_token是有過期時(shí)間的,一旦過期了,主站可以使用refresh_token請(qǐng)求第三方提供的接口獲取新的access_token以及新的refresh_token
在Nodejs中,你可以使用passport來給第三方登錄提供一個(gè)統(tǒng)一解決方案,而如果你是開發(fā)「微信公眾號(hào)」授權(quán),除了passport,也可以使用wechat-oauth

在最后

其實(shí)登錄問題,理解了Session原理是很重要的,這個(gè)也不難理解。然后站點(diǎn)之間的用戶信息交流,就是通過各種跨域限制,各種加密解密而已。在做這個(gè)的時(shí)候,需要充分考慮到加密的token是否會(huì)被竊取的可能性,還要考慮讓這個(gè)token加上時(shí)間的驗(yàn)證,在一些可能會(huì)被竊取,安全需求比較高的情況,就需要把token的時(shí)間設(shè)置的更短。還有就是加密的方式需要依照需求不同而選擇可逆或者不可逆,hash sha1還是JWT(Json Web Token)。
sha1加密,可以使用Nodejs自帶的crypto,JWT可以使用[jsonwebtoken]()

如果本文對(duì)您有用
請(qǐng)不要吝嗇你們的Follow與Start
這會(huì)大大支持我們繼續(xù)創(chuàng)作

「Github」
MZMonster :@MZMonster
JC_Huang :@JerryC8080

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/78926.html

相關(guān)文章

  • Cookie&Session,登錄那些事兒~

    摘要:什么叫保持登錄狀態(tài)比如說我在百度頁面進(jìn)行了登錄,但是不找個(gè)地方記錄這個(gè)登錄態(tài)的話。那我去頁面,我的登錄態(tài)怎么保持呢難道要攜帶嗎這肯定是不安全的。你讓用戶再登錄一次登個(gè)鬼,再見為什么需要登錄態(tài)? 因?yàn)樾枰R(shí)別用戶是誰,否則怎么在網(wǎng)站上看到個(gè)人相關(guān)信息呢? 為什么需要登錄體系? 因?yàn)镠TTP是無狀態(tài)的,什么是無狀態(tài)呢? 就是說這一次請(qǐng)求和上一次請(qǐng)求是沒有任何關(guān)系的,互不認(rèn)識(shí)的,沒有關(guān)聯(lián)的。 我們...

    terro 評(píng)論0 收藏0
  • Coding UI 測試的那些事兒

    摘要:設(shè)想下,如果有段程序,自動(dòng)把你打開瀏覽器,然后跳轉(zhuǎn)到百度首頁。分為江湖傳言今年圣誕節(jié)會(huì)發(fā)布,主要是增強(qiáng)對(duì)移動(dòng)端瀏覽器的測試。至于百度搜出來的那坨,誒,,往事不堪回首。這是面向用戶的最終測試。 一般來說對(duì)一個(gè)網(wǎng)站做測試,最直接的方法就是用手點(diǎn),眼睛看。用手點(diǎn)和眼睛看把網(wǎng)站的功能點(diǎn)都過一遍,比如在百度首頁的搜索框里輸入 coding,點(diǎn)擊百度一下,用眼睛看會(huì)不會(huì)彈出有關(guān) coding 的搜...

    Coly 評(píng)論0 收藏0
  • 大話javascript 7期:Cookie、Session和Token的那些事兒

    摘要:服務(wù)器檢查該,以此來辨認(rèn)用戶狀態(tài)。如果為,表示刪除該。防篡改簽名服務(wù)器為每個(gè)項(xiàng)生成簽名。服務(wù)端根據(jù)接收到的內(nèi)容和簽名,校驗(yàn)內(nèi)容是否被篡改。算法得到的簽名和請(qǐng)求中數(shù)據(jù)的簽名不一致,則證明數(shù)據(jù)被篡改。 一、登錄認(rèn)證機(jī)制 隨著互聯(lián)網(wǎng)的不斷發(fā)展,無論是網(wǎng)站還是app,一般都會(huì)要求用戶注冊(cè)/登錄。主要的登錄方式有賬戶密碼登錄、第三方登錄(微信登錄、QQ登錄、微博登錄等) 登錄可分為三個(gè)階段(登錄...

    tianren124 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<