node.js怎么实现网站登录注册功能
发表于:2024-10-19 作者:千家信息网编辑
千家信息网最后更新 2024年10月19日,这篇文章主要介绍了node.js怎么实现网站登录注册功能的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇node.js怎么实现网站登录注册功能文章都会有所收获,下面我们一起
千家信息网最后更新 2024年10月19日node.js怎么实现网站登录注册功能
这篇文章主要介绍了node.js怎么实现网站登录注册功能的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇node.js怎么实现网站登录注册功能文章都会有所收获,下面我们一起来看看吧。
效果如下
项目构架
主入口app.js
app.js为程序程序主要入口,一般主要用来写我们引入的那些中间件及各种设置
var express = require('express');// NodeJS中的Path对象,用于处理目录的对象,提高开发效率var path = require('path');// 用来定义网页logo的中间件var favicon = require('serve-favicon');// NodeJs中Express框架使用morgan中间件记录日志// Express中的app.js文件已经默认引入了该中间件var logger = require('morgan');// 使用app.use(logger('dev'));以将请求信息打印在控制台,便于开发调试,// 但实际生产环境中,需要将日志记录在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');// 创建项目示例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}));// 静态化我们的public文件下的文件,使其可以直接引用app.use(express.static(path.join(__dirname, 'public')));app.use('/', routes);// app.use('/users', users);// 捕捉404状态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这里我用来处理页面的路由跳转var express = require('express');var router = express.Router();// 为数据库链接的js文件,可查询数据库中的用户名和密码等信息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; // 调用数据库方法 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(); // 调用数据库方法 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');// 现在只是练习可以直接为数据库创建链接,// 用户多时需要创建连接池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 %>
已经登陆 <% }else{%>请登录后查看
<%}%>
reg.ejs
<%- include header %><%- include footer %>
header.ejs
Test