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

nodejs實(shí)現(xiàn)用戶登錄路由功能

 更新時(shí)間:2019年05月22日 17:02:36   作者:ZXJ~佳  
這篇文章主要介紹了nodejs中實(shí)現(xiàn)用戶登錄路由功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

經(jīng)過(guò)前面幾次的學(xué)習(xí),已經(jīng)可以做下小功能,今天要實(shí)現(xiàn)的事用戶登錄路由。

一、users_model.js  功能:定義用戶對(duì)象模型

var mongoose=require('mongoose'),
   Schema=mongoose.Schema;
var UserSchema=new Schema({
   username:{type:String,unique:true},
   email:String,
   color:String,
   hashed_password:String
});
mongoose.model('User',UserSchema);

二、users_controller.js  功能:為Express服務(wù)器實(shí)現(xiàn)用戶登錄路由

var crypto=require('crypto');
var mongoose=require('mongoose'),User=mongoose.model('User');
function hashPW(pwd){
  return crypto.createHash('sha256').update(pwd).
  digest('base64').toString();
}
//實(shí)現(xiàn)用戶登錄路由
exports.login=function (req,res){
  User.findOne({username:req.body.username})
  .exec(function(err,user){
    if(!user){
      err='User Not Found';
    }else if(user.hashed_password===hashPW(req.body.password.toString())){
      req.session.regenerate(function(){
        req.session.user=user.id;
        req.session.username=user.username;
        req.session.msg='Authenticated as ' +user.username;
        res.redirect('/');
      });
    }else{
      err='Authentication failed. ';
    }
    if(err){
      req.session.regenerate(function(){
        req.session.msg=err;
        res.redirect('/login');
      });
    }
  });
};

三、login.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>用戶登錄</title>
<link rel="stylesheet"type="text/css" href="/static/css/styles.css" rel="external nofollow" />
</head>
<body>
<div class="form-container">
 <p class="form-header">登錄</p>
 <form method="POST" >
  <label>用戶名:</label>
   <input type="text" name="username"><br>
   <label>密碼:</label>
   <input type="password" name="password"><br>
   <input type="submit" value="登錄">
 </form>
 </div>
 <a href="/signup" rel="external nofollow" >注冊(cè)</a>
 <hr> <%=msg %>
</body>
</html>

四、routes.js 功能:為Express服務(wù)器實(shí)現(xiàn)處理Web請(qǐng)求路由

var crypto=require('crypto');
var express=require('express');
module.exports=function(app){
  var users=require('./controllers/users_controller');
  app.use('/static',express.static('./static')).
  use('/lib',express.static('../lib')
);
app.get('/login',function(req,res){
  if(req.session.user){
    res.redirect('/');
  }
  res.render('login',{msg:req.session.msg})
});
app.post('/login',users.login);

頁(yè)面效果

總結(jié)

以上所述是小編給大家介紹的nodejs中實(shí)現(xiàn)用戶登錄路由功能,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)歡迎給我留言,小編會(huì)及時(shí)回復(fù)大家的!

相關(guān)文章

  • nodejs簡(jiǎn)單實(shí)現(xiàn)TCP服務(wù)器端和客戶端的聊天功能示例

    nodejs簡(jiǎn)單實(shí)現(xiàn)TCP服務(wù)器端和客戶端的聊天功能示例

    這篇文章主要介紹了nodejs簡(jiǎn)單實(shí)現(xiàn)TCP服務(wù)器端和客戶端的聊天功能,結(jié)合實(shí)例形式分析了nodejs基于TCP協(xié)議實(shí)現(xiàn)的聊天程序客戶端與服務(wù)器端具體步驟與相關(guān)操作技巧,代碼備有較為詳盡的注釋便于理解,需要的朋友可以參考下
    2018-01-01
  • nodejs使用PassThrough流進(jìn)行數(shù)據(jù)傳遞合并示例詳解

    nodejs使用PassThrough流進(jìn)行數(shù)據(jù)傳遞合并示例詳解

    這篇文章主要為大家介紹了nodejs使用PassThrough流進(jìn)行數(shù)據(jù)傳遞合并示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • Express框架實(shí)現(xiàn)簡(jiǎn)單攔截器功能示例

    Express框架實(shí)現(xiàn)簡(jiǎn)單攔截器功能示例

    這篇文章主要介紹了Express框架實(shí)現(xiàn)簡(jiǎn)單攔截器功能,結(jié)合實(shí)例形式分析了express框架攔截器相關(guān)功能與使用方法,需要的朋友可以參考下
    2023-05-05
  • 三步教你完成切換nodejs版本

    三步教你完成切換nodejs版本

    nvm是一個(gè)node的版本管理工具,可以簡(jiǎn)單操作node版本的切換、安裝、查看,下面這篇文章主要給大家介紹了關(guān)于如何通過(guò)三步完成切換nodejs版本的相關(guān)資料,需要的朋友可以參考下
    2023-01-01
  • node.JS二進(jìn)制操作模塊buffer對(duì)象使用方法詳解

    node.JS二進(jìn)制操作模塊buffer對(duì)象使用方法詳解

    在ES6引入TypedArray之前,JavaScript語(yǔ)言沒(méi)有讀取或操作二進(jìn)制數(shù)據(jù)流的機(jī)制,本文為大家詳細(xì)介紹nodeJS中二進(jìn)制操作模塊buffer對(duì)象使用方法詳解
    2020-02-02
  • 詳解nodejs微信公眾號(hào)開(kāi)發(fā)——3.封裝消息響應(yīng)模塊

    詳解nodejs微信公眾號(hào)開(kāi)發(fā)——3.封裝消息響應(yīng)模塊

    上一篇文章:nodejs微信公眾號(hào)開(kāi)發(fā)(2)自動(dòng)回復(fù),實(shí)現(xiàn)了簡(jiǎn)單的關(guān)注回復(fù)。采用拼接字符串的形式,并不是很方便,這里我們將其封裝承接口。
    2017-04-04
  • npm配置淘寶鏡像的教程詳解

    npm配置淘寶鏡像的教程詳解

    npm淘寶鏡像,也稱為npm cnpm或npm.taobao.org,是一個(gè)針對(duì)npm包管理器的國(guó)內(nèi)鏡像服務(wù),通過(guò)設(shè)置npm淘寶鏡像,你可以更快地下載和安裝依賴,本文給大家介紹了npm配置淘寶鏡像的教程,需要的朋友可以參考下
    2024-07-07
  • 什么是MEAN?JavaScript編程中的MEAN是什么意思?

    什么是MEAN?JavaScript編程中的MEAN是什么意思?

    這篇文章主要介紹了什么是MEAN?JavaScript編程中的MEAN是什么意思?,跟lampp一樣,MEAN是指現(xiàn)代web應(yīng)用全棧開(kāi)發(fā)工具一個(gè)組合,需要的朋友可以參考下
    2014-12-12
  • 三分鐘教你用Node做一個(gè)微信哄女友(基友)神器(面向小白)

    三分鐘教你用Node做一個(gè)微信哄女友(基友)神器(面向小白)

    這篇文章主要介紹了三步教你用Node做一個(gè)微信哄女友(基友)神器(面向小白),用node和wechaty微信網(wǎng)頁(yè)接口開(kāi)發(fā)的一款小工具,可以定時(shí)給女朋友發(fā)每天的天氣情況,天氣提醒,每日一句。通過(guò)配置機(jī)器人api后還可以實(shí)現(xiàn)微信機(jī)器人自動(dòng)陪女朋友聊天。,需要的朋友可以參考下
    2019-06-06
  • 淺談JS前端模塊化的幾種規(guī)范

    淺談JS前端模塊化的幾種規(guī)范

    這篇文章主要介紹了JS前端模塊化的幾種規(guī)范,對(duì)前端模塊化感興趣的同學(xué),可以參考下
    2021-05-05

最新評(píng)論