摘要:當的過期時間被設定時,設定的日期和時間只與客戶端相關,而不是服務端。
前記
我將描述一下登陸和注冊之間發生了什么,將場景分為客戶端和服務端,服務器是Node.JS,客戶端是由JS寫的
注冊 1、注冊請求這是由客戶端發送一個POST請求給服務端,其中包含了用戶名和密碼
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、服務器檢查
服務器需要檢查發送過來的用戶名是否注冊過,如果注冊過就返回失敗,如果沒有注冊過就寫入數據庫
3、返回寫入數據庫成功,就將注冊成功返回給用戶
登錄 1、輸入賬號密碼輸入賬號密碼,并用POST發送給服務器,可以檢查輸入格式
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、服務器檢查
獲取賬號密碼,服務器查詢數據庫,看是否有對應的賬號存在
3、返回如果有對應的存在就返回登錄成功,如果沒有,就返回登錄失敗
Cookie在上面的注冊和登錄過程中會有一些問題,網站是如何判斷登錄與否的,有些頁面只有登錄才可以訪問,另外,如何來確認登錄的是誰,這樣才不會搞混亂,這時就需要引入Cookie來解決這些問題
設置Cookie在登錄的一瞬間,服務器通過Set-Cookie,例如
response.setHeader("Set-Cookie", `sign_in_email=${email}`)
告訴瀏覽器,在這個用戶上做了個標記,以后只要相同的源的請求都會帶上這個Cookie,服務器Set-Cookie的是什么,瀏覽器Cookie就會是什么。
期限Cookie并不是永久有效的,就像游樂場的門票一樣,你在游樂場去任何地方都需要這張門票,但是這個門票會有期限,這個期限可以自己設置,和關閉瀏覽器便失效的會話期Cookie不同,持久性Cookie可以指定一個特定的過期時間(Expires)或有效期(Max-Age)。
response.setHeader("Set-Cookie", `id=a3fWa; Expires=Wed, 21 Oct 2015 07:28:00 GMT`)
當Cookie的過期時間被設定時,設定的日期和時間只與客戶端相關,而不是服務端。
特點服務器通過Set-Cookie響應頭來設置Cookie
瀏覽器得到Cookie后,每次請求都會帶上Cookie
服務器讀取Cookie就知道登錄用戶的信息
Cookie存在電腦上的一個秘密的文件位置
Cookie并不安全,可以做假
Cookie有效期的默認時間由瀏覽器決定,后端可以強制設置
不同瀏覽器上的Cookie不可以互通
關于Cookie的更多信息,可以在MDN上查看
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/108250.html
摘要:當的過期時間被設定時,設定的日期和時間只與客戶端相關,而不是服務端。 前記 我將描述一下登陸和注冊之間發生了什么,將場景分為客戶端和服務端,服務器是Node.JS,客戶端是由JS寫的 注冊 1、注冊請求 這是由客戶端發送一個POST請求給服務端,其中包含了用戶名和密碼 let $form = $(#signUpForm) $form.on(submit, (e)=>{ ...
摘要:需要注意的細節問題為什么前后端都要進行表單驗證前后端都要驗證郵箱格式是否正確,賬號密碼格式是否正確,兩次提交的密碼是否相同等。因為黑客可以繞過前端的驗證流程,例如黑客可以直接使用進行請求的發送,直接與后臺服務器進行交互。 這篇文章是前一篇文章(Cookie理論知識)的實踐性理解 完整代碼: 完整代碼 Cookie在注冊登錄時的作用過程: 注冊 注冊時把賬號密碼寫入數據庫 登錄 第一次登...
摘要:為用戶提供授權以允許用戶操作非公開資源,有很多種方式。具體的代碼根據不同的授權方案而有所不同。使用授權原理利用來驗證用戶,有兩種機制實現。使用來實現用戶授權主要用于簽發如果有將異步的簽名。 ? 在很多應用中,我們都需要向服務端提供自己的身份憑證來獲得訪問一些非公開資源的授權。比如在一個博客平臺,我們要修改自己的博客,那么服務端要求我們能夠證明 我是我 ,才會允許我們修改自己的...
摘要:為用戶提供授權以允許用戶操作非公開資源,有很多種方式。具體的代碼根據不同的授權方案而有所不同。使用授權原理利用來驗證用戶,有兩種機制實現。使用來實現用戶授權主要用于簽發如果有將異步的簽名。注意這里的與之前用于簽發的應該是同一個。 在很多應用中,我們都需要向服務端提供自己的身份憑證來獲得訪問一些非公開資源的授權。比如在一個博客平臺,我們要修改自己的博客,那么服務端要求我們能夠證明 我是...
摘要:搭建簡單登錄注冊還是我又來了近來突然對數據庫和后臺有點感興趣就開始了漫長的學習之路想想自己只是一個前端只會斯科瑞普所以就開始看看著看著突然發現和更配哦遂就開了我的之路由于我的表達能力有限下面的文章可能寫的不是那么詳細有看不懂的可以去我上看源 nodejs+mongodb搭建簡單登錄注冊 biu!biu!biu!還是我又來了!!! 近來突然對數據庫和后臺有點感興趣,就開始了漫長的學習之...
閱讀 2403·2021-10-14 09:43
閱讀 2434·2021-09-09 09:34
閱讀 1600·2019-08-30 12:57
閱讀 1198·2019-08-29 14:16
閱讀 716·2019-08-26 12:13
閱讀 3200·2019-08-26 11:45
閱讀 2281·2019-08-23 16:18
閱讀 2652·2019-08-23 15:27