摘要:添加商品頁視圖商品頁視圖用戶登錄成功之后則跳轉(zhuǎn)至視圖頁面商品主頁,就可以進(jìn)行對(duì)商品的瀏覽和選擇了。
1、添加登錄視圖
添加視圖
前面我們已經(jīng)實(shí)現(xiàn)了注冊(cè)功能,用戶可以成功注冊(cè),接著我們就開始讓用戶登錄了,此節(jié)我們就實(shí)現(xiàn)用戶的登錄功能,并且登錄成功后跳轉(zhuǎn)商品頁面查看商品。
首先,我們還是在views目錄下添加登錄視圖頁面 —— login.html,效果圖如下:
2、訪問登陸視圖訪問視圖
有了登錄頁面,那么注冊(cè)頁面(register)的登錄按鈕添加指向登陸頁面的鏈接,相應(yīng)的登陸頁的注冊(cè)按鈕也是如此。
這里我們還是添加一個(gè)相對(duì)應(yīng)的文件用來處理login頁面的請(qǐng)求,routes目錄下新建名為login.js的文件,先來增加一個(gè)處理get請(qǐng)求的方法,代碼參考如下:
module.exports = function (app) { app.get("/login", function (req, res) { res.render("login"); }) };
和register文件一樣添加到index.js中,如下:
require("./login")(app);
register視圖頁的register()函數(shù)的回調(diào)中,當(dāng)注冊(cè)成功時(shí)我們就可以跳轉(zhuǎn)到登陸頁面了,如下:
location.href = "login";
試試登陸、注冊(cè)按鈕能否成功跳轉(zhuǎn)!
3、添加登陸功能實(shí)現(xiàn)登陸
我們?yōu)榈顷懓粹o增加單擊事件和對(duì)應(yīng)函數(shù)login(),參考如下:
function login() { var data = $("form").serialize(); $ajax({ url: "/login", type: "POST", data: data, success: function (data, status) { if (status == "success") { location.href = "home"; } }, error: function (data, status) { if (status == "error") { location.href = "login"; } } }) }
在相應(yīng)的login.js文件中,我們還得添加相對(duì)應(yīng)的post請(qǐng)求處理方法。
4、登陸處理關(guān)于login視圖頁的post請(qǐng)求處理,我們需要判斷用戶所輸入用戶名是否存在,密碼是否正確,并使用變量保存相應(yīng)提示信息,當(dāng)用戶名和密碼全部正確時(shí),則返回成功并保存用戶的個(gè)人信息,用作來判斷用戶的登陸狀態(tài),具體可參考register視圖頁的post請(qǐng)求。
app.post("/login", function (req, res) { var User = global.dbHelper.getModel("user"), uname = req.body.uname; User.findOne({name: uname}, function (error, doc) { if (用戶不存在) { req.session.error = "用戶名不存在!"; res.sendStatus(404); } else if (用戶存在, 密碼錯(cuò)誤) { req.session.error = "密碼錯(cuò)誤!"; res.sendStatus(404); } else { req.session.user = doc; res.sendStatus(200); } }) });
還記得我們登陸的本地變量message嘛,用來保存html標(biāo)簽并包含相應(yīng)提示信息,這里在登陸頁面我們也可以使用,用法:<%- message %>,指定到相應(yīng)位置即可。
5、添加商品頁視圖商品頁視圖
用戶登錄成功之后則跳轉(zhuǎn)至home視圖頁面(商品主頁),就可以進(jìn)行對(duì)商品的瀏覽和選擇了。
還是views目錄,添加home商品視圖頁,如下簡(jiǎn)單效果圖:
用戶成功登錄之后跳轉(zhuǎn)至home頁,這里我們還是做分開處理,routes目錄下新建home.js文件用來處理來自home也的get請(qǐng)求。
這里我們假設(shè)如果用戶未登錄將不能查看商品主頁,所以,在請(qǐng)求處理中我們還需要判斷用戶的登陸狀態(tài),這個(gè)可以使用我們?cè)诘卿浱幚頃r(shí)所保存的用戶個(gè)人信息。
關(guān)于商品頁的視圖展示我們只需要有其名稱、價(jià)格、圖片,這里使用ejs模板循環(huán)展示,可參考如下方式:
注:Commodity:商品集合所有數(shù)據(jù),內(nèi)置圖片路徑為“/example/img”
請(qǐng)求處理
在home的get請(qǐng)求處理中,我們需要首先判斷用戶的登陸狀態(tài),只有用戶登錄了方可跳轉(zhuǎn)到商品頁,如果為登陸呢則跳轉(zhuǎn)到登錄頁,而且在進(jìn)入商品頁的時(shí)候并傳入Commodity集合的所有數(shù)據(jù)數(shù)據(jù)在頁面展示。
首先呢,在models.js文件中定義Commodity集合的Schema屬性,共包括商品名稱、商品價(jià)格、商品圖片,這里簡(jiǎn)單定義如下:
commodity: { name: String, price: Number, imgSrc: String }
routes目錄下添加home.js文件(index.js文件中引用)。
具體處理方式可參考如下代碼:
module.exports = function (app) { app.get("/home", function (req, res) { if (req.session.user) { var Commodity = global.dbHelper.getModel("commodity"); Commodity.find({}, function (error, docs) { //將Commoditys變量傳入home模板 res.render("home", {Commoditys: docs}); }) } else { req.session.error = "請(qǐng)先登錄"; res.redirect("/login"); } }) }7、商品添加視圖頁
添加商品
添加商品,views目錄下添加addcommodity視圖頁面用來對(duì)商品的添加,這里簡(jiǎn)單樣式參考如下:
相對(duì)應(yīng)的addcommodity函數(shù)參考代碼如下:
//imgSrc表示圖片路徑),這里內(nèi)置了5張圖片,格式為:xmsz-X.jpg(X為1-5數(shù)字)。 var data = $("form").serialize() + "&imgSrc=" + "xmsz-" + Math.floor(Math.random() * 5 + 1) + ".jpg"; $ajax({ url: "./addcommodity", type: "POST", data: data, success: function (data, status) { if (status == "success") { alert("添加成功!"); } }, error: function (data, err) { alert("添加失??!"); } })8、商品添加請(qǐng)求處理
商品添加處理
這里我們就直接在home.js文件中添加保存商品的處理方法,如下:
app.get("/addcommodity", function (req, res) { res.render("addcommodity"); }); app.post("./addcommodity", function (req, res) { var Commodity = global.dbHelper.getModel("commodity"); Commodity.create({ name: req.body.name, price: req.body.price, imgSrc: req.body.imgSrc }, function (error, doc) { if (doc) { res.sendStatus(200); } else { res.sendStatus(404); } }) })
到這里關(guān)于商品頁的展示和添加就完成了,在下一節(jié)里我們將實(shí)現(xiàn)商品頁商品加入購(gòu)物車并結(jié)算的功能,繼續(xù)加油吧!
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/19040.html
摘要:登錄之后,用戶可以對(duì)相關(guān)商品進(jìn)行選購(gòu)并添加到購(gòu)物車。結(jié)構(gòu)劃分項(xiàng)目主要分為以下幾大模塊注冊(cè)模塊,登錄模塊,商品模塊購(gòu)物車模塊結(jié)算模塊。購(gòu)物車模塊對(duì)相關(guān)商品進(jìn)行增加減少刪除操作。結(jié)算模塊對(duì)購(gòu)物車內(nèi)已選擇商品進(jìn)行結(jié)算。 1、功能介紹 用戶可以完成注冊(cè)、登錄,登錄后對(duì)商品進(jìn)行瀏覽。 登錄之后,用戶可以對(duì)相關(guān)商品進(jìn)行選購(gòu)并添加到購(gòu)物車。 用戶可以對(duì)購(gòu)物車?yán)锩娴纳唐愤M(jìn)行增加、減少、刪除操作。 用...
摘要:用戶注冊(cè)模塊的設(shè)計(jì)與實(shí)現(xiàn)注冊(cè)模塊功能設(shè)計(jì)介紹功能本模塊主要用于新用戶注冊(cè),用戶通過表單提供用戶名和密碼信息,系統(tǒng)根據(jù)用戶提供的注冊(cè)信息對(duì)用戶進(jìn)行具體操作。如果身份合法,則用戶可進(jìn)入商品頁面。 1、用戶注冊(cè)模塊的設(shè)計(jì)與實(shí)現(xiàn) 注冊(cè)模塊功能設(shè)計(jì)介紹 功能:本模塊主要用于新用戶注冊(cè),用戶通過表單提供用戶名和密碼信息,系統(tǒng)根據(jù)用戶提供的注冊(cè)信息對(duì)用戶進(jìn)行具體操作。 輸入操作:用戶名、密碼、確認(rèn)密...
摘要:登錄認(rèn)證幾乎是任何一個(gè)系統(tǒng)的標(biāo)配,系統(tǒng)客戶端等,好多都需要注冊(cè)登錄授權(quán)認(rèn)證。假設(shè)我們開發(fā)了一個(gè)電商平臺(tái),并集成了微信登錄,以這個(gè)場(chǎng)景為例,說一下的工作原理。微信網(wǎng)頁授權(quán)是授權(quán)碼模式的授權(quán)模式。 登錄認(rèn)證幾乎是任何一個(gè)系統(tǒng)的標(biāo)配,web 系統(tǒng)、APP、PC 客戶端等,好多都需要注冊(cè)、登錄、授權(quán)認(rèn)證。 場(chǎng)景說明 以一個(gè)電商系統(tǒng),假設(shè)淘寶為例,如果我們想要下單,首先需要注冊(cè)一個(gè)賬號(hào)。擁有了賬...
摘要:與攻擊相比,攻擊往往很少見,因此對(duì)其進(jìn)行防范的資源也相當(dāng)稀少。不過,這種受信任的攻擊模式更加難以防范,所以被認(rèn)為比更具危險(xiǎn)性。通過實(shí)時(shí)升級(jí)系統(tǒng)快速同步最新漏洞,避免零日攻擊。 現(xiàn)在,我們絕大多數(shù)人都會(huì)在網(wǎng)上購(gòu)物買東西。但是很多人都不清楚的是,很多電商網(wǎng)站會(huì)存在安全漏洞。比如烏云就通報(bào)過,國(guó)內(nèi)很多家公司的網(wǎng)站都存在 CSRF 漏洞。如果某個(gè)網(wǎng)站存在這種安全漏洞的話,那么我們?cè)谫?gòu)物的過程中...
摘要:驗(yàn)證碼安全參考信息重放登錄注冊(cè)找密等入口,可能通過短信驗(yàn)證碼郵箱驗(yàn)證碼之類的進(jìn)行確認(rèn)操作,如果末對(duì)操作進(jìn)行次數(shù)及頻率上的限制,則會(huì)產(chǎn)生大量的重放攻擊。高并發(fā)缺陷交易類重放攻擊,高并發(fā)的情況下末對(duì)用戶操作行為加鎖,導(dǎo)致購(gòu)買限制的繞過。 showImg(https://segmentfault.com/img/bVBVVR); 業(yè)務(wù)安全從流程設(shè)計(jì)維度可劃分為賬戶體系安全、交易體系安全、支付...
閱讀 1865·2021-09-29 09:35
閱讀 2726·2021-09-22 15:25
閱讀 1980·2021-08-23 09:43
閱讀 2061·2019-08-30 15:54
閱讀 3360·2019-08-30 15:53
閱讀 2396·2019-08-30 13:50
閱讀 2408·2019-08-30 11:24
閱讀 2281·2019-08-29 15:37