使用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这 ...
随机推荐
- 巧用 CSS 构建渐变彩色二维码
今日,群里有个很有意思的问题,问我如何实现一个彩色的,带渐变的二维码,像是这样: 很有意思的问题,我们在百度谷歌,搜索 qrcode,能搜到非常多在线制作二维码的工具,它们其中一些也会带有制作渐变二维 ...
- tensorflow源码解析系列文章索引
文章索引 framework解析 resource allocator tensor op node kernel graph device function shape_inference 拾遗 c ...
- 程序语言与编程实践2-> 蓝桥杯C/C++备赛记录1 | 入门了解与首周训练
寒假前班主任帮我们报了名,是得好好准备准备.作为一个CSer,coding能力一定不能太弱.我反思,好久没写C/C++代码了,净是些随手写的python脚本,刚开始上手题目bug一大堆. 由于也不是啥 ...
- 2022年官网下安装MySQL最全版与官网查阅方法
目录 安装部署MySQL 一.百度查找MySQL官网 二.如图找到DOWNLOADS位置,既是下载位置 三.双击进入DOWNLOADS,下拉找到如图位置(红圈位置是社区免费版,上边部分应该是收费版) ...
- 常用的dos指令
•常用的DOS指令 dir:列出当前目录下的文件及文件夹 md:创建文件 rd:删除文件 cd:进入指定目录 cd..:退回到上一级目录 cd\:退回到根目录 del:删除文件 exi ...
- java-数据类型拓展
import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer;public class Demo03 { public static ...
- centos 在线安装 docker
镜像下载.域名解析.时间同步请点击 阿里巴巴开源镜像站 在新主机上首次安装Docker Engine之前,需要设置Docker存储库.之后,您可以从存储库安装和更新Docker. 设置存储库 安装yu ...
- RabbitMQ Go客户端教程3——发布/订阅
本文翻译自RabbitMQ官网的Go语言客户端系列教程,本文首发于我的个人博客:liwenzhou.com,教程共分为六篇,本文是第三篇--发布/订阅. 这些教程涵盖了使用RabbitMQ创建消息传递 ...
- (leetcode)链表反转-c语言实现
反转一个单链表. 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 使用迭代方法,代码 ...
- Molecule实现数栈至简前端开发新体验
Keep It Simple, Stupid. 这是开发人耳熟能详的 KISS 原则,也像是一句有调侃意味的善意提醒,提醒每个前端人,简洁易懂的用户体验和删繁就简的搭建逻辑就是前端开发的至简大道. 这 ...