使用cookie/session实现简单的用户信息的保存
cookie一般用来存储非关键信息 , 用户名和密码等敏感信息一般采用session 来存储;cookie和session的最大区别是当服务器端存储session 之后,用户再次请求时候只是请求了一个sessionID,这样敏感信息泄露的可能性就大大降低。但是session是基于cookie的,服务器首次接受到用户请求之后, 会将信息生成一个sessionID,将sessionID返回给客户端,后续所有的请求,都是发送这个sessionID给服务器。这就和你去商场办卡之后只需要验证手机号码就可以享受优惠是一样的道理。
在nodejs中 ,cookie的使用需要安装第三方中间件 cookie-parser,而session的使用需要安装第三方中间件express-session !
session的使用方法如下:
var app = express() ;
app.set('trust proxy',1);
app.use(session({
secret: 'keybord cat', //任意信息
resave : false,
saveUninitialized:true,
cookie: { secure:true } //必须是true
}));
之后可以使用req.session 来获取内容了
使用cookie实现的登录控制如下
'use strict';
const express = require('express');
const path = require('path'); //引入bodyParser 来获取用户的登录信息
const bodyParser = require('body-parser');
//引入cookie-parser 来记录用户的登录信息
const cookieParser = require('cookie-parser');
const app = express();
//使用cookie来验证用户是否登录
//逻辑 : 首先进入首页面。然后点击用户中心
// 进入用户中心的时候需要判断是否已经登录
//如果用户已经登录 则直接进入用户中心页面 。包含欢迎回来 ,注销按钮
//如果没有登录,则重定向到登录页面;
//验证账户密码;如果正确; 则进入用户中心, 否则返回登录页面 //使用第三方插件 cookieparser 和bodyParser
app.use(cookieParser());
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false })); app.get('/', (req, res) => {
res.send('<p>欢迎来到首页<a href="/user">用户中心</a></p>');
}); //进入login页面的时候需要直接发送login.HTML
app.get('/login', (req, res) => {
res.sendFile(path.join(__dirname, 'login.html'));
});
//处理用户输入的信息 app.post('/signin', (req, res) => {
let username = req.body.username;
let pwd = req.body.pwd;
if (username == 'admin' && pwd == '123') {
//设置cookie
res.cookie('isLogin', 1, { maxAge: 60000 });
//进入用户中心页面
res.redirect('/user');
} else {
res.redirect('/login');
}
});
app.get('/user', (req, res) => {
// 进入用户中心的时候需要判断是否已经登录
if (req.cookies.isLogin) {
res.send('欢迎来到用户中心<a href="/logout">注销</a>')
} else {
res.redirect('/login');
}
})
app.get('/logout', (req, res) => {
res.clearCookie('isLogin');
res.send('注销成功<a href="/user">返回</a>')
});
app.listen(3001, (req, res) => {
console.log('3001 port is on');
});
使用session实现简单的登录控制代码如下
'use strict';
const express = require('express');
const path = require('path');
const bodyParser = require('body-parser');
const cookieParser = require('cookie-parser');
const session = require('express-session');
const app = express();
app.use(cookieParser());
app.use(bodyParser());
app.use(bodyParser.urlencoded({ extended: false })); app.use(session({
secret: 'qq',
resave: false,
saveUninitialized: true,
cookie: {}
}));
//首页面
app.get('/', (req, res) => {
res.send('<h2>欢迎来到首页点击进入<a href="/user">用户中心</a></h2>');
});
//处理登录动作
app.post('/signin', (req, res) => {
//获取用户名和密码
let username = req.body.username;
let pwd = req.body.pwd;
if (username == 'admin' && pwd == '123') {
req.session.isLogin = 1;
req.session.username = username;
res.redirect('/user');
} else {
res.redirect('/login.html');
}
});
//用户中心
app.get('/user', (req, res) => {
if (req.session.isLogin) {
res.send(`<h2>${req.session.username},欢迎回来!<a href='/logout'>注销</a></h2>`)
} else {
res.redirect('/login');
}
});
//登录页面
app.get('/login', (req, res) => {
//直接重定向到login.html
res.sendFile(path.join(__dirname, 'login.html'));
});
//注销页面
app.get('/logout', (req, res) => {
req.session.destroy();
res.redirect('/');
});
app.listen(3000, () => {
console.log('3000 port is on');
});
ps:没有cookie session也没法工作
使用cookie/session实现简单的用户信息的保存的更多相关文章
- 微信小程序 获取用户信息并保存登录状态
微信小程序 获取用户信息并保存登录状态:http://www.360doc.com/content/18/0124/11/9200790_724662071.shtml
- jsonp跨域实现单点登录,跨域传递用户信息以及保存cookie注意事项
网站A:代码:网站a的login.html页面刷新,使用jsonp方式将信息传递给b.com的login.php中去,只需要在b.com中设置一下跨域以及接收参数,然后存到cookei即可, 注意:网 ...
- Laravel OAuth2 (一) ---简单获取用户信息
前言 本来要求是使用微信进行第三方登陆,所以想着先用 github 测试成功再用微信测试,可是最近拖了好久都还没申请好微信开放平台的 AppID ,所以就只写 github 的第三方登陆吧,估计微信的 ...
- Excelpackage的简单使用(导出用户信息并保存)
EPPlus介绍 EPPlus是一个使用Open Office XML(xlsx)文件格式,能读写Excel 2007/2010 文件的开源组件,在导出Excel的时候不需要电脑上安装office. ...
- java:Session(概述,三层架构实例(实现接口封装JDBC),Session实现简单购物车实例)
1.Session概述: Session:在计算机中,尤其是在网络应用中,称为“会话控制”.Session 对象存储特定用户会话所需的属性及配置信息.这样,当用户在应用程序的 Web 页之间跳转时,存 ...
- Java Web学习总结(6)Cookie/Session
一.会话的概念 会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话. 二.会话过程中要解决的一些问题 每个用户在使用浏览器与服务器进行 ...
- Django之cookie+session
前言 HTTP协议 是短连接.且状态的,所以在客户端向服务端发起请求后,服务端在响应头 加入cokie响应给浏览器,以此记录客户端状态: cook是来自服务端,保存在浏览器的键值对,主要应用于用户登录 ...
- session和cookie的区别和联系详解,Cookie Session相关看这篇就够了。
本文转自:91博客:原文地址:http://www.9191boke.com/199015867.html 有一朋友做面试官的时候,曾经问过很多朋友这个问题: Cookie 和 Session 有什么 ...
- php之将用户信息写入数据库
session高级应用将用户信息写入到数据库中 首先建立数据库表 在实验数据库sqldb中建立session表,用于存储数据 在根文件夹下建立须要用到的文件(重点是session,class.php这 ...
随机推荐
- laravel 怎么获取public路径
app_path() app_path函数返回app目录的绝对路径: $path = app_path(); 你还可以使用app_path函数为相对于app目录的给定文件生成绝对路径: $pa ...
- 利用mysqldump 与 nginx定时器 定时备份mysql库
1.安装mysqldump(如果备份远程mysql库,本地不用安装mysql 也可以单独使用) yum -y install holland-mysqldump.noarch 2.编写备份脚本 首先这 ...
- 面向对象编程(C++篇3)——析构
目录 1. 概述 2. 详论 2.1. 对象生命周期 2.2. 不一定需要显式析构 2.3. 析构的必要性 3. 总结 1. 概述 类的析构函数执行与构造函数相反的操作,当对象结束其生命周期,程序就会 ...
- powerful number筛
心血来潮跑来实现以下这个东西 我们应该知道杜教筛的理论是 \(f * g=h\),那么问题在于如何找 \(g\). 之前的blog应该提到过可以令 \(g(p)=-f(p)\),这样一来 \(h\) ...
- PEP小学五年级英语下册 mp3 音频和电子书
链接:https://pan.baidu.com/s/1O805uHU-lsMKog3WLtjRkA 提取码:o8rg 链接:https://pan.baidu.com/s/1Oa4wcM5min83 ...
- 前端知识之JavaScript知识
前端之javaScript JavaScript html :展示文档内容的 css:控制文档的显示效果 js:控制文档的交互效果 是脚本语言 一种轻量级的编程语言 可插入html页面的编程代码 js ...
- Django之 rest_framework (一基本组件)
目录 RESTFUL 序列化 视图三部曲 认证与权限组件 解析器 分页 RESTFUL 一.什么是RESTFUL REST与技术无关代表的是一种软件架构风格,REST是Representational ...
- 什么是B+树??
上一篇中,我们了解了B树,辣么..B+树又是什么呢?? 一:定义:B+树是基于B树的,是B树的变形,也是一种多路搜索树.查询性能更加出色. 1.每个父节点元素出现在子节点中,是子节点的最大或最小元素. ...
- Java 中怎么获取一份线程 dump 文件?
在 Linux 下,你可以通过命令 kill -3 PID (Java 进程的进程 ID)来获取 Java 应用的 dump 文件.在 Windows 下,你可以按下 Ctrl + Break 来获取 ...
- springmvc组件组成以及springmvc的执行过程
springmvc三大组件 处理器映射器:用户请求路径到Controller方法的映射 处理器适配器:根据handler(controlelr类)的开发方式(注解开发/其他开发) 方式的不同区寻找不同 ...