express-session的简单使用说明
我们知道Internet 通过协议分为stateful和stateless两类,而http是stateless协议,客户端发送请求到服务端建立一个连接,请求得到响应后连接即中断,服务器端不会记录状态,因此服务器端想要确定是哪个客户端提交过来的请求,就必须要借助一些东西去完成:session和cookies。
express-session
session存在于服务器端,需要cookies的协议协助才能完成,服务器端和客户端通过session id来建立联系。
express中可以用中间件来使用session,expres-session可以存在内存中,也可以存在mongodb、redis等中。想了解更多中间件可以:
https://www.npmjs.com/package/express-session
使用:
安装: npm install express-session
示例:使用session来判断用户是否已经登录,如果没有登录,则跳转到登录页
//app.js
var express = require('express');
var path = require('path');
var favicon = require('static-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var session = require('express-session'); ... //这里传入了一个密钥加session id
app.use(cookieParser('Wilson'));
//使用就靠这个中间件
app.use(session({ secret: 'wilson'})); ...
//user.js
var express = require('express');
var router = express.Router();
var options = require('../config/database-default')
var db = require('../config/db.js');
//请求作者页
router.route('/user/index').get(function(req,res,next){
console.log(req.session.user);
if(req.session.user){
res.render('user',{title:'作者管理'});
}else{
req.session.originalUrl = req.originalUrl?req.originalUrl:null;//记录用户的请求路径
console.log(req.session.originalUrl);
res.redirect('/login');
}
})
//login.js
var express = require('express');
var router = express.Router();
//后台管理系统登录 router.route('/login').get(function(req,res,next){
if(req.session.islogin){
res.locals.islogin = req.session.islogin;
}
if(req.cookies.islogin){
req.session.islogin = req.cookies.islogin;
}
console.log('this is login')
res.render('login',{title:'登录'});
}).post(function(req,res){
console.log(req.session.originalUrl); //req.session.user = user;//将用户信息写入到session
if(req.session.originalUrl){
var redirectUrl = req.session.originalUrl;
req.session.originalUrl = null;
}else{//不存在原始请求路径,则将用户重定向到首页路劲
var redirectUrl = '/index';
};
console.log('yes');
req.session.user = 'zhangsan';
res.redirect(redirectUrl);
}); module.exports = router;
清除session
req.session.destroy();
express-session的简单使用说明的更多相关文章
- Spring依赖注入 --- 简单使用说明
Spring依赖注入 --- 简单使用说明 本文将对spring依赖注入的使用做简单的说明,enjoy your time! 1.使用Spring提供的依赖注入 对spring依赖注入的实现方法感兴趣 ...
- express session 和 socketio session关联
express session http是没有状态的协议, 需要web框架自己实现会话和会话管理工作. express框架有session插件可以使用. 见如下介绍: https://www.tuto ...
- express 中间件的简单应用与实现
express 中间件的简单应用与实现 看了慕课网双越老师的课之后结合自己的理解做了一些简单的总结,如有不恰当之处,欢迎指正. 提到 express 就不得不提到中间件,接下来就简单的介绍一下 exp ...
- express session 实现登录
https://www.cnblogs.com/mingjiatang/p/7495321.html Express + Session 实现登录验证 1. 写在前面 当我们登录了一个网站,在没有 ...
- 使用cookie/session实现简单的用户信息的保存
cookie一般用来存储非关键信息 , 用户名和密码等敏感信息一般采用session 来存储:cookie和session的最大区别是当服务器端存储session 之后,用户再次请求时候只是请求了一个 ...
- Oracle 中 union 和union all 的简单使用说明
1.刚刚工作不久,经常接触oracle,但是对oracle很多东西都不是很熟.今天我们来了解一下union和union all的简单使用说明.Union(union all): 指令的目的是将两个 S ...
- struts 标签<s:ierator>的简单使用说明
struts 标签<s:ierator>的简单使用说明,只显示<s:ierator> 的前6条数据 <s:iterator value="lstVisitor& ...
- 使用 NodeJS+Express+MySQL 实现简单的增删改查
关于node.js暂时记录如下,以后有时间一定学习 文章来自简书,作者:sprint,2016-07 使用 Node.js + Express+MySQL 实现简单的增删改查 https://www. ...
- flask的cookie和session的简单原理
在Flask的框架中,自己已经封装了 cookie的respons,request 有存储就有读取及删除,那么就拿购物车来举例 在我们登陆的时候会有之前在购物车存放的物品.也就是说在一个地方为我们保存 ...
- java:Session(概述,三层架构实例(实现接口封装JDBC),Session实现简单购物车实例)
1.Session概述: Session:在计算机中,尤其是在网络应用中,称为“会话控制”.Session 对象存储特定用户会话所需的属性及配置信息.这样,当用户在应用程序的 Web 页之间跳转时,存 ...
随机推荐
- 【bzoj1798】【AHOI2009】维护序列
练一下线段树模板,区间乘法. #include<bits/stdc++.h> #define lson (o<<1) #define rson (o<<1|1) ; ...
- mapper.xml中的<sql>标签
原文链接:http://blog.csdn.net/a281246240/article/details/53445547 sql片段标签<sql>:通过该标签可定义能复用的sql语句片段 ...
- 如何设置static tableview的section区域高度
重写代理方法- (CGFloat) tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { i ...
- vim的各种tips
centos系统,修改vim的配置文件 /etc/vimrc 添加如下内容: 1) 打开 vimrc ,添加以下语句来使得语法高亮显示: syntax on 2) 如果此时语法还是没有高亮显示,那么在 ...
- 0,null,undefined,[],{},'',false之间的关系
0与一些虚值的比较: 0与false 0==false true 0与'': =='' true 0与[]: ==[] true 0与NaN: 0==NaN false 0与undefined 0== ...
- Python Flask SQLALchemy基础知识
一.介绍 SQLAlchemy是一个基于Python实现的ORM框架.该框架建立在 DB API之上,使用关系对象映射进行数据库操作,简言之便是:将类和对象转换成SQL,然后使用数据API执行SQL并 ...
- 【JBPM4】完成任务
示例代码: ProcessEngine processEngine = Configuration.getProcessEngine(); TaskService taskService = proc ...
- W3School WebService教程
http://www.w3school.com.cn/webservices/index.asp
- .net core 2.0学习记录(四):Middleware使用以及模拟构建Middleware(RequestDelegate)管道
.net Core中没有继续沿用以前asp.net中的管道事件,而是开发了一个新的管道(Middleware): public class MiddlewareDemo { private reado ...
- IOS中div contenteditable=true无法输入 fastclick.js在点击一个可输入的div时,ios无法正常唤起输入法键盘
原文地址: https://blog.csdn.net/u010377383/article/details/79838562 前言 为了提升移动端click的响应速度,使用了fastclick.js ...