這篇文章主要介紹了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ù)解決您的所有建站問題。
效果如下
項(xiàng)目構(gòu)架
主入口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 %><%- include footer %>
index.ejs
<%- include header %><% if(locals.islogin){%><%- include footer %>用戶:<%= test %>
已經(jīng)登陸 <% }else{%>請登錄后查看
<%}%>
reg.ejs
<%- include header %><%- include footer %>
header.ejs
Test