node.js平台下利用cookie实现记住密码登陆(Express+Ejs+Mysql)

前端之家收集整理的这篇文章主要介绍了node.js平台下利用cookie实现记住密码登陆(Express+Ejs+Mysql)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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

1.下载MysqL数据库,安装并配置。创建用户表供登录使用:

2.node.js平台下Express的session与cookie模块包的配置:

3.node.js平台下的mysql数据库配置及连接:

完成前两步后需下载配置Ejs模块包:

*下载ejs模块包:npm install ejs --save-dev

*配置ejs:

文件夹 /*自定义文件后缀名,设置模板引擎*/ app.engine("html",ejs.__express); app.set("view engine","html"); //设置模板引擎,代表视图后缀名是ejs

4.登录页面(login.html)

Box bd">
记住密码

5.登陆界面点击登录按钮后,服务器入口文件(app.js)拦截路由/login.do

文件引入perData.js app.post("/Login.do",per.doLogin);

6.拦截路由后分发给路由处理文件(perData.js),perData.js暴露/login.do的接口,并提供处理函数

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嵌入视图页面中。

Box container-fluid">

7.至此完成整个的登录过程,并在用户点击了“记住密码”后,将用户信息写入cookie,并设置了cookie的过期时间。现在需要完善的是,在用户关闭了浏览器窗口后,cookie未过期的前提下,第二次登陆网站会直接显示登录状态,所以需要在服务器入口文件中(app.js)拦截服务器根目录路由,并根据cookie做出判断。

用户信息,则直接返回登陆页面 res.render("perCenter",{u_tel:req.cookies.user.user}) }else{ res.redirect("index.html"); //否则正常显示网站的index.html页面 }

});

*附app.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","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("/",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);

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程之家。

原文链接:https://www.f2er.com/express/39686.html

猜你在找的Express 相关文章