此内容需有node.js+express+mysql入门基础,若基础薄弱,可参考博主的其他几篇node.js博文:

1.下载Mysql数据库,安装并配置。创建用户表供登录使用:
2.node.js平台下Express的session与cookie模块包的配置:https://www./article/112190.htm
3.node.js平台下的mysql数据库配置及连接:https://www./article/110079.htm
完成前两步后需下载配置Ejs模块包:
*下载ejs模块包:npm install ejs --save-dev
*配置ejs:
/*设置模板资源路径*/
app.set ("views",__dirname+"/views"); //视图模板都在这个文件夹
/*自定义文件后缀名,设置模板引擎*/
app.engine("html",ejs.__express);
app.set("view engine","html"); //设置模板引擎,代表视图后缀名是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="请输入手机号" id="phone" name="phone">
<input type="password" placeholder="请输入密码" class="pwd" name="pwd" id="pwd"/>
<div class="other bd">
<label class="obey bd" ><input type="checkbox" id="remPwd" checked> 记住密码</label><a class="forgetPwd">忘记密码?</a>
</div>
<button class="doReg" id="doLogin">登陆</button>
</form>
</section>
</div>
5.登陆界面点击登录按钮后,服务器入口文件(app.js)拦截路由/login.do
const per = require("./routes/perData.js"); //服务器入口文件引入perData.js
app.post("/Login.do",per.doLogin);
6.拦截路由后分发给路由处理文件(perData.js),perData.js暴露/login.do的接口,并提供处理函数。
////登录验证
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){
//此处应有判断用户在login.html中是否点击了记住密码,本文方便思路理解,默认用户已点击“记住密码”
//确定用户是否点击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过期时间
req.session.user=req.body.phone; //服务器端session保存登陆的会话状态
res.render("perCenter",{u_tel:req.session.user}); //ejs模板引擎渲染用户中心页面(perCenter.js),并将u_tel数据返回给前台
}
})
};
*perCenter.js视图页面如下,<%=u_tel%>为ejs语法的定义变量,直接将后台返回的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.至此完成整个的登录过程,并在用户点击了“记住密码”后,将用户信息写入cookie,并设置了cookie的过期时间。现在需要完善的是,在用户关闭了浏览器窗口后,cookie未过期的前提下,第二次登陆网站会直接显示登录状态,所以需要在服务器入口文件中(app.js)拦截服务器根目录路由,并根据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"); //否则正常显示网站的index.html页面
}
});
*附app.js配置文件全部内容:
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("启动成功"+app.get("port"))
});
/*======路由分发======*/
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);
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# node
# cookie实现记住密码
# cookie
# nodejs
# node.js+express+mySQL+ejs+bootstrop实现网站登录注册功能
# 零基础搭建Node.js、Express、Ejs、Mongodb服务器及应用开发入门
# express框架通过ejs模板渲染输出页面实例分析
# Express 框架中使用 EJS 模板引擎并结合 sill
# nodejs中的express-jwt的使用解读
# NodeJS Express使用ORM模型访问关系型数据库流程详解
# NodeJs Express框架操作MongoDB数据库执行方法讲解
# NodeJs Express路由使用流程解析
# NodeJs Express中间件使用流程解析
# express框架+bootstrap美化ejs模板实例分析
# 请输入
# 的是
# 都在
# 并在
# 并将
# 自定义
# 忘记密码
# 后将
# 两步
# 配置文件
# 大家多多
# 正常显示
# 几篇
# 博文
# 前提下
# 登陆界面
# 关闭了
# form
# method
# regTittle
相关文章:
贸易公司网站制作流程,出口贸易网站设计怎么做?
企业宣传片制作网站有哪些,传媒公司怎么找企业宣传片项目?
建站之星如何防范黑客攻击与数据泄露?
建站之星安全性能如何?防护体系能否抵御黑客入侵?
如何通过宝塔面板实现本地网站访问?
如何在Golang中指定模块版本_使用go.mod控制版本号
家庭服务器如何搭建个人网站?
建站之星ASP如何实现CMS高效搭建与安全管理?
制作网站的基本流程,设计网站的软件是什么?
韩国服务器如何优化跨境访问实现高效连接?
如何在云服务器上快速搭建个人网站?
云南网站制作公司有哪些,云南最好的招聘网站是哪个?
C++如何使用std::optional?(处理可选值)
企业微网站怎么做,公司网站和公众号有什么区别?
潍坊网站制作公司有哪些,潍坊哪家招聘网站好?
道歉网站制作流程,世纪佳缘致歉小吴事件,相亲网站身份信息伪造该如何稽查?
香港服务器网站推广:SEO优化与外贸独立站搭建策略
IOS倒计时设置UIButton标题title的抖动问题
定制建站如何定义?其核心优势是什么?
零基础网站服务器架设实战:轻量应用与域名解析配置指南
网站规划与制作是什么,电子商务网站系统规划的内容及步骤是什么?
网站专业制作公司,网站编辑是做什么的?好做吗?工作前景如何?
外贸公司网站制作,外贸网站建设一般有哪些步骤?
*服务器网站为何频现安全漏洞?
c# F# 的 MailboxProcessor 和 C# 的 Actor 模型
高防服务器租用指南:配置选择与快速部署攻略
建站主机助手选型指南:2025年热门推荐与高效部署技巧
html制作网站的步骤有哪些,iapp如何添加网页?
深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?
ppt制作免费网站有哪些,ppt模板免费下载网站?
如何在Windows 2008云服务器安全搭建网站?
广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?
济南网站制作的价格,历城一职专官方网站?
简易网站制作视频教程,使用记事本编写一个简单的网页html文件?
制作网站的网址是什么,请问后缀为.com和.com.cn还有.cn的这三种网站是分别是什么类型的网站?
定制建站是什么?如何实现个性化需求?
如何安全更换建站之星模板并保留数据?
常州企业网站制作公司,全国继续教育网怎么登录?
如何快速生成专业多端适配建站电话?
如何在橙子建站上传落地页?操作指南详解
建站三合一如何选?哪家性价比更高?
如何在IIS管理器中快速创建并配置网站?
建站IDE高效指南:快速搭建+SEO优化+自适应模板全解析
网站制作多少钱一个,建一个论坛网站大约需要多少钱?
建站之星安装步骤有哪些常见问题?
北京制作网站的公司,北京铁路集团官方网站?
阿里云网站制作公司,阿里云快速搭建网站好用吗?
如何基于云服务器快速搭建网站及云盘系统?
南阳网站制作公司推荐,小学电子版试卷去哪里找资源好?
内网网站制作软件,内网的网站如何发布到外网?
*请认真填写需求信息,我们会在24小时内与您取得联系。