真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

node.js怎么實(shí)現(xiàn)網(wǎng)站登錄注冊功能

這篇文章主要介紹了node.js怎么實(shí)現(xiàn)網(wǎng)站登錄注冊功能的相關(guān)知識,內(nèi)容詳細(xì)易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇node.js怎么實(shí)現(xiàn)網(wǎng)站登錄注冊功能文章都會有所收獲,下面我們一起來看看吧。

創(chuàng)新互聯(lián)公司公司2013年成立,先為杭錦后等服務(wù)建站,杭錦后等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為杭錦后企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。

效果如下

  node.js怎么實(shí)現(xiàn)網(wǎng)站登錄注冊功能

項(xiàng)目構(gòu)架

node.js怎么實(shí)現(xiàn)網(wǎng)站登錄注冊功能 

主入口app.js

app.js為程序程序主要入口,一般主要用來寫我們引入的那些中間件及各種設(shè)置

var express = require('express');
// NodeJS中的Path對象,用于處理目錄的對象,提高開發(fā)效率
var path = require('path');
// 用來定義網(wǎng)頁logo的中間件
var favicon = require('serve-favicon');
// NodeJs中Express框架使用morgan中間件記錄日志
// Express中的app.js文件已經(jīng)默認(rèn)引入了該中間件var logger = require('morgan');
// 使用app.use(logger('dev'));以將請求信息打印在控制臺,便于開發(fā)調(diào)試,
// 但實(shí)際生產(chǎn)環(huán)境中,需要將日志記錄在log文件里
var logger = require('morgan');
// 存儲登錄信息中間件
var cookieParser = require('cookie-parser');
// 解析請求體的中間件
var bodyParser = require('body-parser');
// 引入模塊的js文件
var routes = require('./routes/index');
// var users = require('./routes/user');
// 引入session中間件
var session=require('express-session');
// 創(chuàng)建項(xiàng)目示例
var app = express();
// 引入我們需要的模板
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
// 用摩記錄請求
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
// 利用cookieParser中間件存取信息
app.use(cookieParser("Luck"));
// 利用session中間件存取信息
app.use(session({
  secret:'luck',
  resave:false,
  saveUninitialized:true
}));
// 靜態(tài)化我們的public文件下的文件,使其可以直接引用
app.use(express.static(path.join(__dirname, 'public')));
app.use('/', routes);
// app.use('/users', users);
// 捕捉404狀態(tài)
app.use(function(req, res, next) {
  var err = new Error('Not Found');
  err.status = 404;
  next(err);
});
module.exports = app;
app.listen(3000,'127.0.0.1')
routes下的index.js文件
index.js這里我用來處理頁面的路由跳轉(zhuǎn)
var express = require('express');
var router = express.Router();
// 為數(shù)據(jù)庫鏈接的js文件,可查詢數(shù)據(jù)庫中的用戶名和密碼等信息
var usr=require('netRequest/dbConnect');
// 獲取首頁登錄信息
router.get('/', function(req, res) {
  if(req.cookies.islogin){
    req.session.islogin=req.cookies.islogin;
  }
  if(req.session.islogin){
    res.locals.islogin=req.session.islogin;
  }
 res.render('index', { title: 'HOME',test:res.locals.islogin});
});
// 登錄頁處理
router.route('/login')
  // get請求渲染頁面  
  .get(function(req, res) {
    if(req.session.islogin){
      res.locals.islogin=req.session.islogin;
    }
    if(req.cookies.islogin){
      req.session.islogin=req.cookies.islogin;
    }
    res.render('login', { title: '用戶登錄' ,test:res.locals.islogin});
  })
  // post請求查詢用戶信息
  .post(function(req, res) {
    client=usr.connect();
    result=null;
    // 調(diào)用數(shù)據(jù)庫方法
    usr.selectFun(client, req.body.username, function (result) {
      if(result[0]===undefined){
        res.send('沒有該用戶');
      }else{
        if(result[0].password==req.body.password){
          req.session.islogin=req.body.username;
          res.locals.islogin=req.session.islogin;
          res.cookie('islogin',res.locals.islogin,{maxAge:60000});
          res.redirect('/home');
        }else{
          res.redirect('/login');
        }
      }
    });
  });
// 退出登錄頁處理
router.get('/logout', function(req, res) {
  res.clearCookie('islogin');
  req.session.destroy();
  res.redirect('/');
});
// home頁處理
router.get('/home', function(req, res) {
  if(req.session.islogin){
    res.locals.islogin=req.session.islogin;
  }
  if(req.cookies.islogin){
    req.session.islogin=req.cookies.islogin;
  }
  res.render('home', { title: 'Home', user: res.locals.islogin });
});
// 注冊頁處理
router.route('/reg')
  // get請求渲染頁面
  .get(function(req,res){
    res.render('reg',{title:'注冊'});
  })
  // post請求注冊用戶
  .post(function(req,res) {
    client = usr.connect();
    // 調(diào)用數(shù)據(jù)庫方法
    usr.insertFun(client,req.body.username ,req.body.password2, function (err) {
       if(err) throw err;
       res.send('注冊成功');
    });
  });
module.exports = router;
node_modules中netRequest/dbConnect.js

dbConnect.js

var MySQL=require('mysql');
// 現(xiàn)在只是練習(xí)可以直接為數(shù)據(jù)庫創(chuàng)建鏈接,
// 用戶多時需要創(chuàng)建連接池
function connectServer(){
  var client=mysql.createConnection({
    host:'172.16.20.103',
    port:3308,
    database:'test',
    user:'JRJ_Win',
    password:'FT%^$fjYR56'
  })
  return client;
}
function selectFun(client,username,callback){
  client.query('select password from win.luck_user where username="'+username+'"',function(err,results,fields){
    if(err) throw err;
    callback(results);
  });
}
function insertFun(client , username , password,callback){
  client.query('insert into win.luck_user value(?,?)', [username, password], function(err,result){
    if( err ){
      console.log( "error:" + err.message);
      return err;
    }
     callback(err);
  });
}
exports.connect = connectServer;
exports.selectFun = selectFun;
exports.insertFun = insertFun;

剩下即為頁面模板

login.ejs

<%- include header %>

  
    
      <% if(locals.islogin) { %>           

用戶: <%= test %>  已經(jīng)登陸。

           退出登錄           <% } else{ %>                            用戶名                                               
            
                           密碼                                               
                                                         登錄                                   <% } %>         <%- include footer %>

index.ejs

<%- include header %>

  <% if(locals.islogin){%>
    

用戶:<%= test %> 

已經(jīng)登陸     <% }else{%>       請登錄后查看   <%}%>   <%- include footer %>

reg.ejs

<%- include header %>

  
    
               用戶名                                                    密碼                                                               注冊                     
   <%- include footer %>

header.ejs




  
  Test
  
  
  



  
    
      
        
          Toggle navigation
          
          
          
        
        Project name
      
      
        
          待定
          
  • 待定
  •           
  • 待定
  •                        待定                            
  • Action
  •               
  • Another action
  •               
  • Something else here
  •                              Nav header               
  • Separated link
  •               
  • One more separated link
  •                                                     首頁(current)           
  • 登錄
  •           
  • 注冊
  •                          

    footer.ejs

    
    
    

    關(guān)于“node.js怎么實(shí)現(xiàn)網(wǎng)站登錄注冊功能”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對“node.js怎么實(shí)現(xiàn)網(wǎng)站登錄注冊功能”知識都有一定的了解,大家如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


    分享標(biāo)題:node.js怎么實(shí)現(xiàn)網(wǎng)站登錄注冊功能
    文章地址:http://weahome.cn/article/gipoec.html

    在線咨詢

    微信咨詢

    電話咨詢

    028-86922220(工作日)

    18980820575(7×24)

    提交需求

    返回頂部