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的更多相关文章

  1. Node_进阶_8

    Node进阶第八天 一.复习 Node.js特点:单线程.异步I/O(非阻塞I/O).事件驱动(事件环). 适合的程序:就是没有太多的计算,I/O比较多的业务. 举例:留言本.考试系统.说说.图片裁切 ...

  2. Node_进阶_7

    Node进阶第七天 一.复习 一.索引   数据库中,根据一个字段的值,来寻找一个文档,是很常见的操作.比如根据学号来找一个学生.这个学号是唯一的.只要有学号,就能唯一确认一个学生的文档.学号这个属性 ...

  3. Node_进阶_5

    Node进阶第五天 为什么mysql不用开mongod –dbpath xx… 答:因为mysql会在”服务”中运行,也就是开机时自动启动并且长久驻扎在内存中了. mongodb其实也能通过设置来设成 ...

  4. Node_进阶_4

    Node进阶第四天 一.传统数据库技术回顾 数据库就是存储数据的,那么存储数据用txt就行了啊,为什么要有数据库? 理由之一:数据库有行.列的概念,数据有关系,数据不是散的. 老牌数据库,比如Mysq ...

  5. React-Native进阶_6.导航 Naviagtion传递数据并展示

    接着上面 Navigation 继续学习传递数据给下一个页面 onPress={() => this.props.navigation.navigate('Detail',{info:movie ...

  6. Node_进阶_2

    第二天 一.复习: Node.js开发服务器.数据.路由.本地关心效果,交互. Node.js实际上是极客开发出的一个小玩具,不是银弹.有着别人不具备的怪异特点: 单线程.非阻塞I/O.事件驱动. 实 ...

  7. Node_进阶_1

    第一天 1.1简介 Node.js简介 V8引擎本身就是用于Chrome浏览器的JS解释部分,Ryan Dahl把这个V8搬到了服务器上,用于做服务器的软件. Node.js是一个让Javascrip ...

  8. Node_进阶_3

    Express框架: 一.   Express框架 Express框架是后台的Node框架,类似于JS中的jquery. #原生Node开发会有很多问题: 1呈递静态页面很不方便,需要处理每个HTTP ...

  9. PythonI/O进阶学习笔记_6.对象引用,可变性和垃圾回收

    前言: 没有前言了- -......这系列是整理的以前的笔记上传的,有些我自己都忘记我当时记笔记的关联关系了. 记住以后 笔记记了就是用来复习的!!!不看不就啥用没了吗!!! content: 1.p ...

随机推荐

  1. web产品浏览器兼容性问题你有考虑到吗?

    通常,动态网页除了Server端的代码撰写Client端代码也必须下不少工夫.例如:表单提交前的数据验证.图片的轮播.菜单的收合等等. 因此,对于Client端是否能正常执行指令码也必须适当的考察,然 ...

  2. 在ros中集成Fast-rtps库并运行hello world 程序

    1.介绍 ROS:自行百度 Fast-RTPS:是eProsima公司对RTPS标准的一个实现,也就是函数库.RTPS是DDS标准中的一个子集.RTPS:Real Time Publish Subsc ...

  3. video标签实现简单视频背景+遇到问题(视频无法显示,不能自动播放)

    最近看网上有一些网站首页背景是炫酷的视频背景,就想模拟一个 1.video标签简介 video标签定义视频,就是可以在网页上实现视频的播放,详情见http://www.w3school.com.cn/ ...

  4. elementUI 日期时间选择器el-date-picker开始时间与结束时间约束

    主要思路:el-date-picker组件需要 :picker-options属性,属性值为data,data的数据来自于methods中的方法. ##template代码 <el-form-i ...

  5. VS2015 C# 编写USB通信上位机时,改变net框架导致DLL调用失败的问题解决方法

    最近在写USB通信的上位机,调用了windows里的DLL,开发环境:64位WIN7 .VS2015.NET4.5.2:开发完成后在自己的电脑可用,在32位电脑.NET其他版本以及WIN10的环境下不 ...

  6. 利用 ST-LINK Utility软件下载程序

    先在电脑上安装STM32 ST-LINK Utility,软件安装一路Next就可以了,安装好软件之后界面如下:    下载程序只需要使用3个图标就可以了 第一个图标Connect to the ta ...

  7. 前后端分离开发,跨域访问的apche设置

    1,如何让Apache支持跨域访问呢? 步骤: 修改httpd.conf,windows中对应的目录是:C:\wamp\bin\apache\Apache2.4.4\conf\httpd.conf 把 ...

  8. Ubuntu(Linux Mint):sudo apt-get upgrade升级失败

    Ubuntu上进行sudo apt-get upgrade后出现异常,升级失败. 异常信息如下: E: dpkg was interrupted, you must manually run 'dpk ...

  9. 使用jmap和MAT分析JVM堆内存

    http://blog.csdn.net/alli0968/article/details/52460008

  10. 洛谷—— P3225 [HNOI2012]矿场搭建

    https://www.luogu.org/problem/show?pid=3225 题目描述 煤矿工地可以看成是由隧道连接挖煤点组成的无向图.为安全起见,希望在工地发生事故时所有挖煤点的工人都能有 ...