欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

node.js平臺(tái)下利用cookie實(shí)現(xiàn)記住密碼登陸(Express+Ejs+Mysql)

 更新時(shí)間:2017年04月26日 10:23:08   作者:牙疼哥哥  
這篇文章主要介紹了node.js平臺(tái)下利用cookie實(shí)現(xiàn)記住密碼登陸(Express+Ejs+Mysql),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。

此內(nèi)容需有node.js+express+mysql入門基礎(chǔ),若基礎(chǔ)薄弱,可參考博主的其他幾篇node.js博文:

1.下載Mysql數(shù)據(jù)庫,安裝并配置。創(chuàng)建用戶表供登錄使用:

2.node.js平臺(tái)下Express的session與cookie模塊包的配置:http://www.dbjr.com.cn/article/112190.htm

3.node.js平臺(tái)下的mysql數(shù)據(jù)庫配置及連接:http://www.dbjr.com.cn/article/110079.htm

完成前兩步后需下載配置Ejs模塊包:

*下載ejs模塊包:npm install ejs --save-dev

*配置ejs:

  /*設(shè)置模板資源路徑*/
  app.set ("views",__dirname+"/views");  //視圖模板都在這個(gè)文件夾
  /*自定義文件后綴名,設(shè)置模板引擎*/
  app.engine("html",ejs.__express);
  app.set("view engine","html");  //設(shè)置模板引擎,代表視圖后綴名是ejs

4.登錄頁面(login.html)

<div class="registerBg">
  <section class="registerBox bd">
    <div class="regTittle">登陸</div>
    <form method="post" action="/login.do">
      <input type="text" class="phone" placeholder="請(qǐng)輸入手機(jī)號(hào)" id="phone" name="phone">
      <input type="password" placeholder="請(qǐng)輸入密碼" class="pwd" name="pwd" id="pwd"/>
      <div class="other bd">
        <label class="obey bd" ><input type="checkbox" id="remPwd" checked>&nbsp;記住密碼</label><a class="forgetPwd">忘記密碼?</a>
      </div>
      <button class="doReg" id="doLogin">登陸</button>
    </form>
  </section>
</div>

5.登陸界面點(diǎn)擊登錄按鈕后,服務(wù)器入口文件(app.js)攔截路由/login.do

const per = require("./routes/perData.js");       //服務(wù)器入口文件引入perData.js
app.post("/Login.do",per.doLogin);

6.攔截路由后分發(fā)給路由處理文件(perData.js),perData.js暴露/login.do的接口,并提供處理函數(shù)。

////登錄驗(yàn)證
exports.doLogin=function(req,res){
  console.log(req.body.phone);
  console.log(req.body.pwd);
  db.connect("select * from t_user where u_tel=? and u_pwd=?",[req.body.phone,req.body.pwd],function(err,data){
    console.log(data.length);
    if(data.length>0){
        //此處應(yīng)有判斷用戶在login.html中是否點(diǎn)擊了記住密碼,本文方便思路理解,默認(rèn)用戶已點(diǎn)擊“記住密碼”
        //確定用戶是否點(diǎn)擊checkBox的方法:
        //1.原生js: document.getElementById("remPwd").checked
        //2.jquery: $("#remPwd").is(":checked")
      res.cookie("user",{"user":req.body.phone,"pwd":req.body.pwd},{maxAge:1000*60*60});    //登陸成功后將用戶和密碼寫入Cookie,maxAge為cookie過期時(shí)間
      req.session.user=req.body.phone;                             //服務(wù)器端session保存登陸的會(huì)話狀態(tài)
      res.render("perCenter",{u_tel:req.session.user});                        //ejs模板引擎渲染用戶中心頁面(perCenter.js),并將u_tel數(shù)據(jù)返回給前臺(tái)
    }
  })
};

*perCenter.js視圖頁面如下,<%=u_tel%>為ejs語法的定義變量,直接將后臺(tái)返回的u_tel嵌入視圖頁面中。

<div class="navBox container-fluid">
  <div class="row">
    <span class="col-lg-2 col-md-2 icon-lianxi contact alignLeft"> 010-65596969</span>
    <span class="col-lg-2 col-md-2 icon-denglu contact col-lg-push-8 col-md-push-2 alignRight"><%=u_tel%></span>    
  </div>
</div>

7.至此完成整個(gè)的登錄過程,并在用戶點(diǎn)擊了“記住密碼”后,將用戶信息寫入cookie,并設(shè)置了cookie的過期時(shí)間。現(xiàn)在需要完善的是,在用戶關(guān)閉了瀏覽器窗口后,cookie未過期的前提下,第二次登陸網(wǎng)站會(huì)直接顯示登錄狀態(tài),所以需要在服務(wù)器入口文件中(app.js)攔截服務(wù)器根目錄路由,并根據(jù)cookie做出判斷。

app.get("/",function(req,res){
  if(req.cookies.user){            //cookie中存在用戶信息,則直接返回登陸頁面
    res.render("perCenter",{u_tel:req.cookies.user.user})
  }else{
    res.redirect("index.html");      //否則正常顯示網(wǎng)站的index.html頁面
  }

});

*附app.js配置文件全部內(nèi)容:

const express = require("express");
const app = express(); 
const session = require("express-session");
const cookie = require("cookie-parser");
const ejs = require("ejs");
const per = require("./routes/perData.js");

app.configure(function(){
  app.use(cookie());
  app.use(session({
    name:"final",
    secret:"1234567",
    cookie:{maxAge:10000},  //毫秒為單位
    resave:true,
    rolling:true
  }));
  app.set ("views",__dirname+"/views");  
  app.engine("html",ejs.__express);
  app.set("view engine","html");  
  app.use(express.logger("dev")); 
  app.use(express.bodyParser()); 
  app.use(express.methodOverride()); 
  app.use(app.router); 
  app.use(express.static(__dirname+"/public"));  
  //app.use(express.favicon(__dirname+"/public/images/favicon.ico")); 
  app.use(express.errorHandler());  
});
app.set("port",8889);

app.listen(app.get("port"),function(){
  console.log("啟動(dòng)成功"+app.get("port"))
});


/*======路由分發(fā)======*/
app.get("/",function(req,res){
  if(req.cookies.user){
    res.render("perCenter",{u_tel:req.cookies.user.user})
  }else{
    res.redirect("index.html");
  }

});
app.post("/Login.do",per.doLogin);

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Node.js中文件操作模塊File System的詳細(xì)介紹

    Node.js中文件操作模塊File System的詳細(xì)介紹

    FileSystem模塊是類似UNIX(POSIX)標(biāo)準(zhǔn)的文件操作API,用于操作文件系統(tǒng)——讀寫目錄、讀寫文件——Node.js底層使用C程序來實(shí)現(xiàn),這些功能是客戶端JS所不具備的。下面這篇文章就給大家詳細(xì)介紹了Node.js中的文件操作模塊File System,有需要的朋友們可以參考借鑒。
    2017-01-01
  • nodejs中的異步編程知識(shí)點(diǎn)詳解

    nodejs中的異步編程知識(shí)點(diǎn)詳解

    在本篇內(nèi)容里小編給大家整理的是一篇關(guān)于nodejs中的異步編程知識(shí)點(diǎn)詳解內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。
    2021-01-01
  • node.js中的fs.lstatSync方法使用說明

    node.js中的fs.lstatSync方法使用說明

    這篇文章主要介紹了node.js中的fs.lstatSync方法使用說明,本文介紹了fs.lstatSync的方法說明、語法、接收參數(shù)、使用實(shí)例和實(shí)現(xiàn)源碼,需要的朋友可以參考下
    2014-12-12
  • Nodejs+Socket.io實(shí)現(xiàn)通訊實(shí)例代碼

    Nodejs+Socket.io實(shí)現(xiàn)通訊實(shí)例代碼

    本篇文章主要介紹了Nodejs+Socket.io實(shí)現(xiàn)通訊實(shí)例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-02-02
  • Node.js編程中客戶端Session的使用詳解

    Node.js編程中客戶端Session的使用詳解

    這篇文章主要介紹了Node.js編程中客戶端Session的使用詳解,是Node.js入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-06-06
  • 詳解如何使用Node.js編寫命令工具——以vue-cli為例

    詳解如何使用Node.js編寫命令工具——以vue-cli為例

    本篇文章主要介紹了如何使用Node.js編寫命令工具——以vue-cli為例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • 一文詳解npm如何更新項(xiàng)目最新依賴包

    一文詳解npm如何更新項(xiàng)目最新依賴包

    npm包的更新速度很快,為了將項(xiàng)目或者全局依賴更新到最新版本,下面這篇文章主要給大家介紹了關(guān)于npm如何更新項(xiàng)目最新依賴包的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-01-01
  • 詳解如何使用PM2將Node.js的集群變得更加容易

    詳解如何使用PM2將Node.js的集群變得更加容易

    本篇文章主要介紹了詳解如何使用PM2將Node.js的集群變得更加容易,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-11-11
  • Node的事件處理和readline模塊詳解

    Node的事件處理和readline模塊詳解

    這篇文章主要為大家詳細(xì)介紹了Node的事件處理和readline模塊,使用數(shù)據(jù)庫,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • 詳解Node.JS模塊 process

    詳解Node.JS模塊 process

    這篇文章主要介紹了Node.JS模塊 process的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)node.js,感興趣的朋友可以了解下
    2020-08-08

最新評(píng)論