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

資訊專欄INFORMATION COLUMN

實(shí)現(xiàn)前后端登錄注冊界面

不知名網(wǎng)友 / 3573人閱讀

摘要:本篇博客講解如何實(shí)現(xiàn)前后端的簡單登錄注冊界面,后端代碼由實(shí)現(xiàn),主要闡述登錄注冊時(shí)網(wǎng)頁工作原理。四登錄后跳轉(zhuǎn)首頁登錄界面獲取到瀏覽器設(shè)置的,再次向服務(wù)器請(qǐng)求跳轉(zhuǎn)到首頁時(shí)需要附上這段,服務(wù)器讀取后同意跳轉(zhuǎn)到首頁。

本篇博客講解如何實(shí)現(xiàn)前后端的簡單登錄注冊界面,后端代碼由node.js實(shí)現(xiàn),主要闡述登錄注冊時(shí)網(wǎng)頁工作原理。感興趣的同學(xué)可以參考一下。

注冊界面

功能:

判斷用戶是否輸入郵箱,密碼,驗(yàn)證密碼(前端判斷)

判斷用戶的郵箱格式是否正確(后端判斷)

判斷輸入的密碼和驗(yàn)證密碼是否一致(前端判斷)

判斷注冊的郵箱是否唯一(后端判斷)

1.html部分:

</>復(fù)制代碼

  1. 注冊

  2. 郵箱
  3. 密碼
  4. 確認(rèn)密碼
2.js部分(由jquery實(shí)現(xiàn)):

監(jiān)聽表單的submit事件,將用戶輸入的信息存儲(chǔ)到hash表中,如果用戶輸入不合法則出現(xiàn)錯(cuò)誤提示信息

</>復(fù)制代碼

  1. $("#RegisterForm").on("submit",(e) => {
  2. e.preventDefault();
  3. let hash = {};
  4. let arg = ["email","password","password_confirm"];
  5. arg.forEach((name) => {
  6. let value = $("#RegisterForm").find(`[name= ${name}]`).val();
  7. hash[name] = value;
  8. })
  9. $("#RegisterForm").find(".error").each((index,span) => {
  10. $(span).text(""); //初始的錯(cuò)誤提示為空
  11. })
  12. if(hash["email"] === ""){
  13. $("#RegisterForm").find("[name = "email"]").siblings(".error").text("請(qǐng)輸入郵箱");
  14. return
  15. }
  16. if(hash["password"] === ""){
  17. $("#RegisterForm").find("[name = "password"]").siblings(".error").text("請(qǐng)輸入密碼");
  18. return
  19. }
  20. if(hash["password_confirm"] === ""){
  21. $("#RegisterForm").find("[name = "password_confirm"]").siblings(".error").text("請(qǐng)輸入密碼");
  22. return
  23. }
  24. if(hash["password"] !== hash["password_confirm"] ){
  25. $("#RegisterForm").find("[name = "password_confirm"]").siblings(".error").text("密碼不匹配");
  26. return
  27. }
3.ajax發(fā)送post請(qǐng)求register頁面:

如果請(qǐng)求成功,打印出返回的信息;
如果請(qǐng)求失敗,判斷一下失敗信息,然后給出錯(cuò)誤信息提示;

</>復(fù)制代碼

  1. $.post("/register",hash).then((response) =>{console.log(response)},
  2. (request) => {
  3. let {errors} = request.responseJSON;/*等價(jià)于----
  4. -------let {errors} = JSON.parse(request.responseText)*/
  5. if(errors.email && errors.email === "invalid"){
  6. $("#RegisterForm").find("[name = "email"]")
  7. .siblings(".error").text("郵箱輸錯(cuò)了");
  8. }
  9. })
  10. })
4.服務(wù)端代碼:

給register頁面的(發(fā)送POST請(qǐng)求)設(shè)置路由,
后端代碼將瀏覽器傳來的request中的信息存儲(chǔ)到hash中,判斷是否符合輸入要求,同時(shí)判斷郵箱是否唯一,如果不符合,服務(wù)器返回400,給出提示;如果符合,返回200,將數(shù)據(jù)信息存儲(chǔ)到本地?cái)?shù)據(jù)庫./db/users

</>復(fù)制代碼

  1. else if(path === "/register" && method ==="POST"){
  2. readBody(request).then((body) => {
  3. let strings = body.split("& ");
  4. let hash = {};
  5. strings.forEach((string) => {
  6. let parts = string.split("=");
  7. let key = parts[0];
  8. let value = parts[1];
  9. hash[key] = decodeURIComponent(value) ;//解決url路徑解析不了@符號(hào)的問題
  10. })
  11. let {email, password, password_confirm} = hash;
  12. if (email.indexOf("@") === -1) {
  13. response.statusCode = 400;
  14. response.setHeader("Content-Type", "text/json;charset=utf-8")
  15. response.write(`{"errors":
  16. {"email":"invalid"}
  17. }`);
  18. }
  19. else if (password !== password_confirm) {
  20. response.statusCode = 400;
  21. response.write("password not match");
  22. }
  23. else {
  24. var users = fs.readFileSync("./db/users","utf8")
  25. try{
  26. users = JSON.parse(users)
  27. }
  28. catch(exception) {
  29. users = [];
  30. }
  31. let inUse = false;
  32. for(let i = 0;i {
  33. let body = [];
  34. request.on("data",(chunk) => {
  35. body.push(chunk)
  36. }).on("end",() => {
  37. body = Buffer.concat(body).toString();
  38. resolve(body);
  39. })
  40. })
  41. }
二·登錄界面

功能:

判斷用戶輸入的郵箱,密碼是否為空(前端判斷)

判斷用戶輸入的郵箱是否正確(后端判斷)

判斷輸入的密碼是否正確(后端判斷)

1.html部分:

</>復(fù)制代碼

  1. 登錄

  2. 郵箱
  3. 密碼
2.JS部分:

將用戶填寫的登錄信息存儲(chǔ)到hash表中,如果用戶輸入為空,則給出錯(cuò)誤信息提示

</>復(fù)制代碼

  1. $("#loginForm").on("submit",(e) => {
  2. e.preventDefault();
  3. let hash = {};
  4. let arg = ["email","password"];
  5. arg.forEach((name) => {
  6. let value = $("#loginForm").find(`[name= ${name}]`).val();
  7. hash[name] = value;
  8. })
  9. $("#loginForm").find(".error").each((index,span) => {
  10. $(span).text("");
  11. })
  12. if(hash["email"] === ""){
  13. $("#loginForm").find("[name = "email"]").siblings(".error").text("請(qǐng)輸入郵箱");
  14. return
  15. }
  16. if(hash["password"] === ""){
  17. $("#loginForm").find("[name = "password"]").siblings(".error").text("請(qǐng)輸入密碼");
  18. return
  19. }
3.ajax發(fā)送post請(qǐng)求login頁面:

如果請(qǐng)求成功,跳轉(zhuǎn)到首頁;如果請(qǐng)求失敗,給出登錄失敗的提示

</>復(fù)制代碼

  1. $.post("/login",hash).then(() =>{window.location.href="/"},
  2. () => {
  3. alert("登錄失敗,請(qǐng)重新登錄")
  4. })
  5. })
4.給login頁面(post請(qǐng)求)設(shè)置路由:

讀取本地?cái)?shù)據(jù)庫./db/users,與瀏覽器傳來的formdata進(jìn)行比對(duì),如果用戶密碼正確,給瀏覽器設(shè)置cookie,將用戶登錄的郵箱名存下來,返回200

</>復(fù)制代碼

  1. else if(path==="/login" && method ==="POST"){
  2. readBody(request).then((body) => {
  3. let strings = body.split("&");
  4. let hash = {};
  5. strings.forEach((string) => {
  6. let parts = string.split("=");
  7. let key = parts[0];
  8. let value = parts[1];
  9. hash[key] = decodeURIComponent(value);
  10. })
  11. let {email, password} = hash;
  12. var users = fs.readFileSync("./db/users","utf8")
  13. try{
  14. users = JSON.parse(users)
  15. }
  16. catch(exception) {
  17. users = [];
  18. }
  19. let found ;
  20. for(let i = 0;i
  21. 這里講到了給瀏覽器設(shè)置cookie,我們就來簡單了解一下什么是cookie。

  22. 三·cookie
  23. cookie指某些網(wǎng)站為了辨別用戶身份、進(jìn)行 session 跟蹤而儲(chǔ)存在用戶本地終端上的數(shù)據(jù)(通常經(jīng)過加密)
    服務(wù)器通過set-cookie后,給瀏覽器傳了一段識(shí)別身份的數(shù)據(jù);之后瀏覽器給次請(qǐng)求都會(huì)附上這份cookie數(shù)據(jù),服務(wù)器以此來驗(yàn)明瀏覽器的身份。cookie的時(shí)效性一般是兩天左右,可以自行設(shè)置。
    通俗的來講就是cookie就是一個(gè)驗(yàn)證身份的門票,服務(wù)器給瀏覽器發(fā)了一張門票,瀏覽器請(qǐng)求數(shù)據(jù)時(shí)需要拿出門票,服務(wù)器看到門票后驗(yàn)證了身份,才會(huì)同意請(qǐng)求。
    這里值得注意的是cookie的作用域domain,cookie也遵守瀏覽器同源策略,不同域名的cookie的是不一樣的。

  24. 四·登錄后跳轉(zhuǎn)首頁
  25. 登錄界面獲取到瀏覽器設(shè)置的cookie,再次向服務(wù)器請(qǐng)求跳轉(zhuǎn)到首頁時(shí)需要附上這段cookie,服務(wù)器讀取后同意跳轉(zhuǎn)到首頁。
    功能:

  26. 若登錄成功,跳轉(zhuǎn)到首頁,在首頁顯示登錄郵箱名

  27. 1.html部分(首頁):
  28. </>復(fù)制代碼

    1. 這是首頁

    2. 用戶: --email--
  29. 2.給首頁設(shè)置路由:
  30. 讀取cookie值,展示在首頁上,顯示當(dāng)前登錄的用戶郵箱名

  31. </>復(fù)制代碼

    1. else if(path === "/"){
    2. let string = fs.readFileSync("./index.html", "utf8")
    3. let cookies = request.headers.cookie.split("; ");/*這里多出一個(gè)空格,要注意*/
    4. let hash = {};
    5. for(let i =0 ;i
    6. 總結(jié)
    7. 講解完實(shí)現(xiàn)過程后,我們來總結(jié)一下:
      當(dāng)我們進(jìn)行登錄注冊時(shí),網(wǎng)頁都做了些什么呢?
      1.我們進(jìn)行注冊時(shí),瀏覽器向服務(wù)器發(fā)送post請(qǐng)求,同時(shí)將注冊信息傳過去;
      2.服務(wù)器將用戶信息存儲(chǔ)到本地?cái)?shù)據(jù)庫后,告知瀏覽器注冊成功
      3.用戶打開登錄界面,輸入登錄信息,向服務(wù)器發(fā)送post請(qǐng)求
      4.服務(wù)器讀取本地?cái)?shù)據(jù)庫,比對(duì)登錄信息是否正確,若錯(cuò)誤,告知瀏覽器登錄失?。蝗粽_給瀏覽器設(shè)置cookie
      5.瀏覽器向服務(wù)器發(fā)送get請(qǐng)求,訪問首頁,附上cookie
      6.服務(wù)器讀取cookie,驗(yàn)證身份后,同意瀏覽器訪問首頁

    8. 源碼
      附上一個(gè)vue版本帶有登錄注冊功能的備忘錄demo

    9. 以上是個(gè)人觀點(diǎn),如有錯(cuò)誤歡迎指出。

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

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

相關(guān)文章

  • 實(shí)現(xiàn)前后登錄注冊界面

    摘要:本篇博客講解如何實(shí)現(xiàn)前后端的簡單登錄注冊界面,后端代碼由實(shí)現(xiàn),主要闡述登錄注冊時(shí)網(wǎng)頁工作原理。四登錄后跳轉(zhuǎn)首頁登錄界面獲取到瀏覽器設(shè)置的,再次向服務(wù)器請(qǐng)求跳轉(zhuǎn)到首頁時(shí)需要附上這段,服務(wù)器讀取后同意跳轉(zhuǎn)到首頁。 本篇博客講解如何實(shí)現(xiàn)前后端的簡單登錄注冊界面,后端代碼由node.js實(shí)現(xiàn),主要闡述登錄注冊時(shí)網(wǎng)頁工作原理。感興趣的同學(xué)可以參考一下。 注冊界面 功能: 判斷用戶是否輸入郵箱,...

    Blackjun 評(píng)論0 收藏0
  • 系統(tǒng)的講解 - SSO單點(diǎn)登錄

    摘要:概念英文全稱,單點(diǎn)登錄。登錄如上述流程圖一致。系統(tǒng)和系統(tǒng)使用認(rèn)證登錄。退出上圖,表示的是從某一個(gè)系統(tǒng)退出的流程圖。與的關(guān)系如果企業(yè)有多個(gè)管理系統(tǒng),現(xiàn)由原來的每個(gè)系統(tǒng)都有一個(gè)登錄,調(diào)整為統(tǒng)一登錄認(rèn)證。 概念 SSO 英文全稱 Single Sign On,單點(diǎn)登錄。 在多個(gè)應(yīng)用系統(tǒng)中,只需要登錄一次,就可以訪問其他相互信任的應(yīng)用系統(tǒng)。 比如:淘寶網(wǎng)(www.taobao.com),天貓網(wǎng)...

    Kylin_Mountain 評(píng)論0 收藏0
  • Vue-book 2.0 一個(gè)移動(dòng)簡單的全棧 web APP

    摘要:本項(xiàng)目是一個(gè)簡單的全棧項(xiàng)目,前端新手可以拿來練練手。項(xiàng)目實(shí)現(xiàn)了一些簡單的功能,后臺(tái)可以對(duì)圖書進(jìn)行錄入錄出掃碼或手動(dòng),前臺(tái)顯示錄入的圖書,并且前臺(tái)注冊登錄后可以將書的訂單發(fā)給服務(wù)器,并存到服務(wù)器。 Vue-book 2.0 Github 地址:https://github.com/percy507/v... 【覺得不錯(cuò)就來個(gè) star 吧 ^_^】 說明(菜鳥請(qǐng)進(jìn),大神繞道 ~) 前端...

    wh469012917 評(píng)論0 收藏0
  • Vue-book 2.0 一個(gè)移動(dòng)簡單的全棧 web APP

    摘要:本項(xiàng)目是一個(gè)簡單的全棧項(xiàng)目,前端新手可以拿來練練手。項(xiàng)目實(shí)現(xiàn)了一些簡單的功能,后臺(tái)可以對(duì)圖書進(jìn)行錄入錄出掃碼或手動(dòng),前臺(tái)顯示錄入的圖書,并且前臺(tái)注冊登錄后可以將書的訂單發(fā)給服務(wù)器,并存到服務(wù)器。 Vue-book 2.0 Github 地址:https://github.com/percy507/v... 【覺得不錯(cuò)就來個(gè) star 吧 ^_^】 說明(菜鳥請(qǐng)進(jìn),大神繞道 ~) 前端...

    NotFound 評(píng)論0 收藏0
  • 阿里云9.9元學(xué)生服務(wù)器的購買和配置方法

    摘要:一通過學(xué)生價(jià)購買云服務(wù)器步驟一個(gè)人認(rèn)證與實(shí)名認(rèn)證進(jìn)入阿里云官網(wǎng)點(diǎn)擊右上角登錄按鈕這里使用的是淘寶賬號(hào)密碼支付,這個(gè)大家應(yīng)該都有吧,沒有自己去注冊個(gè)淘寶賬號(hào)輸入淘寶賬號(hào)密碼后點(diǎn)擊激活之后點(diǎn)頭像后點(diǎn)擊實(shí)名認(rèn)證點(diǎn)擊支付寶認(rèn)證點(diǎn)擊立即認(rèn)證后進(jìn)入支付一.通過學(xué)生價(jià)購買云服務(wù)器 步驟一:個(gè)人認(rèn)證與實(shí)名認(rèn)證 1.進(jìn)入阿里云官網(wǎng)2.點(diǎn)擊右上角登錄按鈕(這里使用的是淘寶賬號(hào)密碼支付,這個(gè)大家應(yīng)該都有吧,沒有自...

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

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

0條評(píng)論

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