本篇,我们将在express中引入session支持(引入express-session模块).
介绍下express中如何集成配置session。
03_ejs_session.js
//03_ejs_session.js
//介绍 express中session 的使用
// 1 npm install express-session --save 安装
//2 配置express-session 中间件
// app.use(session({
// secret: 'this is string key', // 可以随便写。 一个 String 类型的字符串,作为服务器端生成 session 的签名
// name:'session_id',/*保存在本地cookie的一个名字 默认connect.sid 可以不设置*/
// resave: false, /*强制保存 session 即使它并没有变化,。默认为 true。建议设置成 false。*/
// saveUninitialized: true, //强制将未初始化的 session 存储。 默认值是true 建议设置成true
// cookie: {
// maxAge:1000*30*60 /*过期时间*/
//
// }, /*secure https这样的情况才可以访问cookie*/
//
// //设置过期时间比如是30分钟,只要游览页面,30分钟没有操作的话在过期
//
// rolling:true //在每次请求时强行设置 cookie,这将重置 cookie 过期时间(默认:false)
// }))
var express = require("express");
var bodyParser = require('body-parser');
var session = require("express-session");
var app = express();
//设置 express模板引擎为 ejs
app.set("view engine","ejs");
//设置模板的位置 ( 缺省位置也是 __dirname + '/views')
app.set('views', __dirname + '/views');
//配置body-parser中间件
// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false }));
// parse application/json
app.use(bodyParser.json());
//配置express-session 中间件
app.use(session({
secret: 'mysessionKey', // 可以随便写。 一个 String 类型的字符串,作为服务器端生成 session 的签名
name:'session_id',/*保存在本地cookie的一个名字 默认connect.sid 可以不设置*/
resave: false, /*强制保存 session 即使它并没有变化,。默认为 true。建议设置成 false。*/
saveUninitialized: true, //强制将未初始化的 session 存储。 默认值是true 建议设置成true
cookie: {
maxAge:1000*30*60 /*过期时间*/
}, /*secure https这样的情况才可以访问cookie*/
//设置过期时间比如是30分钟,只要游览页面,30分钟没有操作的话在过期
rolling:true ,//在每次请求时强行设置 cookie,这将重置 cookie 过期时间(默认:false)
//将session 信息持久化到mongodb
// store:new MongoStore({
// url: 'mongodb://127.0.0.1:27017/shop', //数据库的地址
// touchAfter: 24 * 3600 //time period in seconds 通过这样做,设置touchAfter:24 * 3600,您在24小时内只更新一次会话,不管有多少请求(除了在会话数据上更改某些内容的除外)
// })
}));
//配置session 获取中间件
app.use(function(req, res, next){
res.locals.session = req.session;
next();
});
// <%=session.user.username%> ejs页面中这样可以获取session中用户信息
//去登录页面
app.get("/login",function (req,res) {
res.send("<html><h3>用户登录</h3>" +
"<form action='/login' method='post'> " +
"用户名:<input type='text' name='username'/> <br/>"+
"密码:<input type='password' name='password'/> <br/>"+
"<input type='submit' value='登录' /> <br/>"+
"</form>"+
"</html>");
});
//登录提交数据
app.post("/login",function (req,res) {
//res.render()
var username =req.body['username'];
var password =req.body['password'];
if(username=='admin' && password=='123456'){
//登录成功
//查询db中用户 ,存入session 设置session
req.session.userinfo={
username:username,password:password,age:22,liveCity:'北京'};
res.send("恭喜,登录成功");
}else{
res.send("登录失败");
}
});
app.get('/personalInfo',function (req,res) {
//获取个人信息 从session中获取
// var userinfo =req.session.userinfo;
// if(!userinfo || userinfo=={}){
// res.send('您还没有登录呢');
// }else{
// res.send('您的个人信息:<br/>'+JSON.stringify(userinfo));
// }
var userinfo =req.session.userinfo;
if(!userinfo || userinfo=={}){
res.send('您还没有登录呢')
}else {
//异步回调中 自动执行了res.end(result );
//res.render("personalInfo.ejs",{'userinfo':userinfo});
//手动书写render后的异步回调
// res.render("personalInfo.ejs",{'userinfo':userinfo},function (err,result) {
// if (err) {
// console.log(err);
// }else{
// console.log(result);
// res.end(result);//
// }
// });
res.render("personalInfo2.ejs");// good
}
});
//退出登录
app.get("/loginOut",function(req,res){
//req.session.cookie.maxAge=0; /*改变cookie的过期时间*/
//销毁session
req.session.destroy(function(err){
console.log(err);
});
res.send('退出登录成功');
});
app.listen(3000);


阅读排行


Copyright © 叮叮声的奶酪 版权所有
备案号:鄂ICP备17018671号-1