摘要:當(dāng)?shù)倪^期時間被設(shè)定時,設(shè)定的日期和時間只與客戶端相關(guān),而不是服務(wù)端。
前記
我將描述一下登陸和注冊之間發(fā)生了什么,將場景分為客戶端和服務(wù)端,服務(wù)器是Node.JS,客戶端是由JS寫的
注冊 1、注冊請求這是由客戶端發(fā)送一個POST請求給服務(wù)端,其中包含了用戶名和密碼
let $form = $("#signUpForm") $form.on("submit", (e)=>{ e.preventDefault() let hash = {} let need = ["email", "password", "password_confirmation"] need.forEach((name)=>{ let value = $form.find(`[name=${name}]`).val() hash[name] = value }) $form.find(".error").each((index, span)=>{ $(span).text("") }) $.post("/sign_up", hash) .then((response)=>{ console.log(response) }, (request)=>{ let {errors} = request.responseJSON if(errors.email && errors.email === "invalid"){ $form.find("[name="email"]").siblings(".error") .text("郵箱格式錯誤") } }) })2、服務(wù)器檢查
服務(wù)器需要檢查發(fā)送過來的用戶名是否注冊過,如果注冊過就返回失敗,如果沒有注冊過就寫入數(shù)據(jù)庫
3、返回寫入數(shù)據(jù)庫成功,就將注冊成功返回給用戶
登錄 1、輸入賬號密碼輸入賬號密碼,并用POST發(fā)送給服務(wù)器,可以檢查輸入格式
let $form = $("#signInForm") $form.on("submit", (e) => { e.preventDefault() let hash = {} let need = ["email", "password"] need.forEach((name) => { let value = $form.find(`[name=${name}]`).val() hash[name] = value }) $form.find(".error").each((index, span) => { $(span).text("") }) $.post("/sign_in", hash) .then((response) => { window.location.href = "/" }, (request) => { alert("郵箱與密碼不匹配") }) })2、服務(wù)器檢查
獲取賬號密碼,服務(wù)器查詢數(shù)據(jù)庫,看是否有對應(yīng)的賬號存在
3、返回如果有對應(yīng)的存在就返回登錄成功,如果沒有,就返回登錄失敗
Cookie在上面的注冊和登錄過程中會有一些問題,網(wǎng)站是如何判斷登錄與否的,有些頁面只有登錄才可以訪問,另外,如何來確認(rèn)登錄的是誰,這樣才不會搞混亂,這時就需要引入Cookie來解決這些問題
設(shè)置Cookie在登錄的一瞬間,服務(wù)器通過Set-Cookie,例如
response.setHeader("Set-Cookie", `sign_in_email=${email}`)
告訴瀏覽器,在這個用戶上做了個標(biāo)記,以后只要相同的源的請求都會帶上這個Cookie,服務(wù)器Set-Cookie的是什么,瀏覽器Cookie就會是什么。
期限Cookie并不是永久有效的,就像游樂場的門票一樣,你在游樂場去任何地方都需要這張門票,但是這個門票會有期限,這個期限可以自己設(shè)置,和關(guān)閉瀏覽器便失效的會話期Cookie不同,持久性Cookie可以指定一個特定的過期時間(Expires)或有效期(Max-Age)。
response.setHeader("Set-Cookie", `id=a3fWa; Expires=Wed, 21 Oct 2015 07:28:00 GMT`)
當(dāng)Cookie的過期時間被設(shè)定時,設(shè)定的日期和時間只與客戶端相關(guān),而不是服務(wù)端。
特點服務(wù)器通過Set-Cookie響應(yīng)頭來設(shè)置Cookie
瀏覽器得到Cookie后,每次請求都會帶上Cookie
服務(wù)器讀取Cookie就知道登錄用戶的信息
Cookie存在電腦上的一個秘密的文件位置
Cookie并不安全,可以做假
Cookie有效期的默認(rèn)時間由瀏覽器決定,后端可以強制設(shè)置
不同瀏覽器上的Cookie不可以互通
關(guān)于Cookie的更多信息,可以在MDN上查看
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/52868.html
摘要:當(dāng)?shù)倪^期時間被設(shè)定時,設(shè)定的日期和時間只與客戶端相關(guān),而不是服務(wù)端。 前記 我將描述一下登陸和注冊之間發(fā)生了什么,將場景分為客戶端和服務(wù)端,服務(wù)器是Node.JS,客戶端是由JS寫的 注冊 1、注冊請求 這是由客戶端發(fā)送一個POST請求給服務(wù)端,其中包含了用戶名和密碼 let $form = $(#signUpForm) $form.on(submit, (e)=>{ ...
摘要:需要注意的細節(jié)問題為什么前后端都要進行表單驗證前后端都要驗證郵箱格式是否正確,賬號密碼格式是否正確,兩次提交的密碼是否相同等。因為黑客可以繞過前端的驗證流程,例如黑客可以直接使用進行請求的發(fā)送,直接與后臺服務(wù)器進行交互。 這篇文章是前一篇文章(Cookie理論知識)的實踐性理解 完整代碼: 完整代碼 Cookie在注冊登錄時的作用過程: 注冊 注冊時把賬號密碼寫入數(shù)據(jù)庫 登錄 第一次登...
摘要:為用戶提供授權(quán)以允許用戶操作非公開資源,有很多種方式。具體的代碼根據(jù)不同的授權(quán)方案而有所不同。使用授權(quán)原理利用來驗證用戶,有兩種機制實現(xiàn)。使用來實現(xiàn)用戶授權(quán)主要用于簽發(fā)如果有將異步的簽名。 ? 在很多應(yīng)用中,我們都需要向服務(wù)端提供自己的身份憑證來獲得訪問一些非公開資源的授權(quán)。比如在一個博客平臺,我們要修改自己的博客,那么服務(wù)端要求我們能夠證明 我是我 ,才會允許我們修改自己的...
摘要:為用戶提供授權(quán)以允許用戶操作非公開資源,有很多種方式。具體的代碼根據(jù)不同的授權(quán)方案而有所不同。使用授權(quán)原理利用來驗證用戶,有兩種機制實現(xiàn)。使用來實現(xiàn)用戶授權(quán)主要用于簽發(fā)如果有將異步的簽名。注意這里的與之前用于簽發(fā)的應(yīng)該是同一個。 在很多應(yīng)用中,我們都需要向服務(wù)端提供自己的身份憑證來獲得訪問一些非公開資源的授權(quán)。比如在一個博客平臺,我們要修改自己的博客,那么服務(wù)端要求我們能夠證明 我是...
摘要:搭建簡單登錄注冊還是我又來了近來突然對數(shù)據(jù)庫和后臺有點感興趣就開始了漫長的學(xué)習(xí)之路想想自己只是一個前端只會斯科瑞普所以就開始看看著看著突然發(fā)現(xiàn)和更配哦遂就開了我的之路由于我的表達能力有限下面的文章可能寫的不是那么詳細有看不懂的可以去我上看源 nodejs+mongodb搭建簡單登錄注冊 biu!biu!biu!還是我又來了!!! 近來突然對數(shù)據(jù)庫和后臺有點感興趣,就開始了漫長的學(xué)習(xí)之...
閱讀 1181·2021-09-22 15:24
閱讀 2285·2019-08-30 15:44
閱讀 2615·2019-08-30 10:55
閱讀 3355·2019-08-29 13:25
閱讀 1639·2019-08-29 13:09
閱讀 1391·2019-08-26 14:05
閱讀 1379·2019-08-26 13:58
閱讀 1985·2019-08-26 11:57