Node_进阶_6
Node进阶第六天
一、复习
cookie是在res中设置,req中读取的。第一次的访问没有cookie。
cookie的存储大小有限,kv对儿。对用户可见,用户可以禁用、清除cookie、可以被篡改。
cookie用来制作记录用户的一些信息,必须购买历史、猜你喜欢。
HTTP是无状态的协议,所以两次的访问,服务器不能认识到是同一个客户端的cookie,就要用cookie来巧妙地解决这个问题。
Session就是利用cookie,实现的”会话”。就是第一次访问的时候,可以在服务器上为这个用户缓存一些信息,别的用户是不能看见这个用户的信息的。服务器会下发一个密钥(cookie),客户端每次访问都携带这个密钥,那么,服务器如果发现这个密钥吻合,就能够显示这个用户曾经保存的信息。
登录就是用Session来制作的。任何语言的session都是透明的。不会体现cookie机理。
express-session中对session的处理都是使用的req,而不是res:
var session = require('express-session');
app.use(session({
//一些配置
//一些配置
//一些配置
}));
app.get("/", function (req, res) {
console.log(req.session.login);
});
app.get("/login", function (req, res) {
req.session.login = "1";
});
二、加密
永远不要用明码写密码。 CSDN今年泄露用户密码了,并且泄露的明码。
黑客拿到的用户的密码的加密信息,所以也没用。因为他无法翻译成为明码。
MD5加密是函数型加密,就是每次加密的结果一定相同,没有随机位。
特点:
·不管加密的文字,多长多短,永远都是32位英语字母、数字混合。
·哪怕只改一个字,密文都会大变。
·MD5没有反函数破解的可能,网上的破解工具,都是通过字典的模式,同故宫大量列出明-密对应的字典找到明码的。
MD5常用于作为版本校验。可以比对两个软件、文件是否完全。
node中自带了一个模块,叫做crypto模块,负责加密。
首先创建hash:
var md5 = crypto.createHash(‘md5’);
var password = md5.update(fields.password).digest(‘base64’);
创造了一个哈希对应,给他一个明码,就能对应,
然后update和digest:
var crypto = require('crypto');
const fs = require('fs');
console.log(md5('123456'))
function md5(mingma){
var md5 = crypto.createHash('md5');
var password = md5.update(mingma).digest('base64');
return password;
}
二、图片处理
Graphicsmagick
http://www.graphicsmagick.org/
GraphicsMagick is the swiss army knife of image processing.
装完之后,可视化工具一点用都没有,从桌面上删除。我们要把安装目录设置为环境变量。
在终端中使用:
//格式转换
gm convert a.bmp a.jpg
//更改当前目录下*.jpg的尺寸大小,并保存于目录.thumb里面
gm mogrify –output-directory .thumbs –resize 320x200 *.jpg
nodejs 要使用graphicsmagick,需要npm装一个gm的包。
node.js缩略图的制作:
var fs = require(‘fs’);
var gm = require(‘gm’);
gm(‘./danny.jpg’)
.resize(50,50)
.write(‘./danny2.jpg’,function(err){
if(err){
console.log(err);
}
})
node.js头像裁切:
gm(‘./danny.jpg’).crop(141,96,152,181).write(‘./2.jpg’,function(err){
//141 96是宽高,152 181是坐标
})
crop图像剪裁
班级说说
不能转发的微博系统。
注册、登录,可以发微博。
没有”关注”、”收听”机制,所有人的微博,都能被你看见(像论坛)。
按时间排序。
可以对一个微博进行”赞”、”评论”。
班级说说。
==================================
数据库中的collection
user这个集合,存储用户的信息,里面的document举例
username不能重复,
{_oid:’fasdasd’,”username”:”小明”,”password”:”md5加密”,”avatar”:”20150925.jpg”,’sign’:”一句话签名”};
{_oid:’fasdasd’,”username”:”小红”,”password”:”md5加密”,”avatar”:”20150925.jpg”,’sign’:”一句话签名”};
{_oid:’fasdasd’,”username”:”小绿”,”password”:”md5加密”,”avatar”:”20150925.jpg”,’sign’:”一句话签名”};
post集合,存储用户发表的文章
{“title”:”标题”,”content”:”内容”,”author”:”小明”,”date”:”日期”,”comment”:[
{
“content”:”真好”,
“author”:”小红”,
“date”:”2015年9月26日15:31:24”
},{
“content”:”真好”,
“author”:”小红”,
“date”:”2015年9月26日15:31:24”
},{},{}],”zan”:[“小明”,”小强”]}
Node_进阶_6的更多相关文章
- Node_进阶_8
Node进阶第八天 一.复习 Node.js特点:单线程.异步I/O(非阻塞I/O).事件驱动(事件环). 适合的程序:就是没有太多的计算,I/O比较多的业务. 举例:留言本.考试系统.说说.图片裁切 ...
- Node_进阶_7
Node进阶第七天 一.复习 一.索引 数据库中,根据一个字段的值,来寻找一个文档,是很常见的操作.比如根据学号来找一个学生.这个学号是唯一的.只要有学号,就能唯一确认一个学生的文档.学号这个属性 ...
- Node_进阶_5
Node进阶第五天 为什么mysql不用开mongod –dbpath xx… 答:因为mysql会在”服务”中运行,也就是开机时自动启动并且长久驻扎在内存中了. mongodb其实也能通过设置来设成 ...
- Node_进阶_4
Node进阶第四天 一.传统数据库技术回顾 数据库就是存储数据的,那么存储数据用txt就行了啊,为什么要有数据库? 理由之一:数据库有行.列的概念,数据有关系,数据不是散的. 老牌数据库,比如Mysq ...
- React-Native进阶_6.导航 Naviagtion传递数据并展示
接着上面 Navigation 继续学习传递数据给下一个页面 onPress={() => this.props.navigation.navigate('Detail',{info:movie ...
- Node_进阶_2
第二天 一.复习: Node.js开发服务器.数据.路由.本地关心效果,交互. Node.js实际上是极客开发出的一个小玩具,不是银弹.有着别人不具备的怪异特点: 单线程.非阻塞I/O.事件驱动. 实 ...
- Node_进阶_1
第一天 1.1简介 Node.js简介 V8引擎本身就是用于Chrome浏览器的JS解释部分,Ryan Dahl把这个V8搬到了服务器上,用于做服务器的软件. Node.js是一个让Javascrip ...
- Node_进阶_3
Express框架: 一. Express框架 Express框架是后台的Node框架,类似于JS中的jquery. #原生Node开发会有很多问题: 1呈递静态页面很不方便,需要处理每个HTTP ...
- PythonI/O进阶学习笔记_6.对象引用,可变性和垃圾回收
前言: 没有前言了- -......这系列是整理的以前的笔记上传的,有些我自己都忘记我当时记笔记的关联关系了. 记住以后 笔记记了就是用来复习的!!!不看不就啥用没了吗!!! content: 1.p ...
随机推荐
- 悦享双节,Guitar Pro也来凑份热闹!
光阴似箭,又是一个金秋的十月,祖国迎来了第68个生日,不同以往的是今年的中秋佳节与国庆假日重叠在一起了,这算不算是喜上加喜呢? 提到国庆人们的耳边总是会响起了一遍又一遍的国歌“起来,起来不愿做奴隶的人 ...
- Qwiklab'实验-API Gateway, AWS Lambda'
title: AWS之Qwiklab subtitle: 2. Qwiklab'实验-API Gateway, AWS Lambda' date: 2018-09-20 17:29:20 --- In ...
- servletconfig和servletcontext学习
servletconfig java.lang.String getInitParameter(java.lang.String name) //根据参数名获取参数值 java.util.Enume ...
- BZOJ 3910 火车 倍增LCA
本题并不需要并查集,每次查询一次最近公共祖先,并倍增求出需要被新标记的路径. 这样保证时间复杂度是 O(nlogn)O(nlogn)O(nlogn) 的. Code: #include<cstd ...
- webpack——bable-loader,core,preset,编译es6
//文件夹,在命令行中npm init 之后可以一直回车,答y 出现文件 然后安装bable npm install -save-dev babel-loader babel-core 文件 然后我们 ...
- 【XSY2892】【GDSOI2018】谁是冠军
题目来源:noi2018模拟测试赛(二十三)T3 san 为什么noi模拟赛里会做到省选原题啊…… 题意: Description 有n个人,简单起见把他们编号为1到n,每个人有三项指标分别是攻击力, ...
- HDU1027 Ignatius and the Princess II( 逆康托展开 )
链接:传送门 题意:给出一个 n ,求 1 - n 全排列的第 m 个排列情况 思路:经典逆康托展开,需要注意的时要在原来逆康托展开的模板上改动一些地方. 分析:已知 1 <= M <= ...
- Matplotlib 绘图与可视化 一些属性和错误
属性 *)调整图像边缘及图像间的空白间隔plt.subplots.adjust(6个参数) 图像外部边缘的调整可以使用plt.tight_layout()进行自动控制,此方法不能够很好的控制图像间的间 ...
- nginx虚拟主机的配置不生效
这个坑找了好久,今天终于找到了问题所在. 一般虚拟主机配置文件是vhost里面单独写一个网站名.conf,然后在nginx最后include vhosts/*.conf 引用. 但是我这里的vhost ...
- C++ OTL MySQL(Windows/Linux) V8.1
Windows每秒钟10000条以上插入:Linux每秒插入300条以上.Q269752451 输出截图: Linux输出: Windows输出: 有须要的联系 QQ 3508551694 water ...