express—开发API接口

express要作为服务器接口,很多功能的实现需要一些中间件 或 包。下面对这些功能罗列下:

解析请求体

  • express.json():内置中间件
  • express.urlencodes():内置中间件

日志输出:

为客户端提供跨域资源请求:

  • cors():

数据验证:(请求参数的验证)

  • express-validator

密码加密:(注册时的密码需要加密)

  • MD5:node内置模块

 

JWT认证: 

 

 

使用session与cookie

1、express如何使用session与cookie : https://www.jianshu.com/p/1839e482274e  或  https://www.cnblogs.com/chyingp/p/express-session.html(推荐,比较完整)

2、cookie 可以多条设置,类似 localstorage 的存储。设置时相同名称 会被覆盖掉。

  res.cookie('isFirst', 1, { maxAge: 6000 * 1000, singed: true});
  res.cookie('isFirst2', 2, { maxAge: 6000 * 1000, singed: true});
  res.cookie('isFirst', 3, { maxAge: 6000 * 1000, singed: true});

 

3、express 中调用 session 方法,会创建一条 cookie 的,这个session的信息对应这条cookie的信息的。

app.use(session({
  name: 'test_session', // 这里是cookie的name,默认是connect.sid
  secret: 'my_session_secret', // 建议使用 128 个字符的随机字符串
  resave: true,
  saveUninitialized: false,
  cookie: { maxAge: 6000 * 1000, httpOnly: true }
}));
    req.session.isFirst = 1; // 程序中必须要至少一个 session 字段值,不然 session 不会启用; session设置的字段,浏览器是没有数据,只有对应的sessionID值。(这个是经过自己方法测试总结出来的)

 

 


总结:

1、session与cookie 的使用,可以 定位某个用户(判断是否登录过)。不使用session、cookie也可以实现 定位某个用户,使用token实现。

2、使用 token登录验证机制 :https://blog.csdn.net/weixin_42237752/article/details/88655511

         给每个接口传递一个userID(token值) 参数,因为userID是通过接口获取的,且每次获取是不一样的,所以这个只能获取一次,缓存下来。给其它页面使用。两种方案各有优缺点。

3、现在基本都使用tooken而不用session了:        https://blog.csdn.net/mydistance/article/details/84545768 

  一般单台服务器使用session,分布式服务器(多台服务器)一般不用session。因为session只是保存在一台主机内存中,其它的主机是没有;要让所有的主机同步或共享session,还要另外处理。如果用户多了session占用的内存会很大。所以tooken的优势比较大

 



 

【知识点补充】  前端判断用户登录状态方法

  1、cookie 和  token 的区别:

     a、两者cookie是http请求头内置(标准)的字段;而token是人手动添加到头部的字段【类似一个普通变量】。

     b、当存在一个 cookie,该 cookie 的值会在随后的每次请求中被发送至服务器【即之后的请求都会带上这个cookie值】。除非手动设置不 要带上这么cookie。 https://www.w3cschool.cn/pegosu/pbjagozt.html

     c、而 token 只是请求头的一个普通变量。只有在当前请求设置了这个变量才会携带在请求头上。后面的请求,只要没有手动设置,都不会再携带这个字段的。

     总结:将 token存储到 cookie中,这样 token 值就有 cookie 的特点。前端手动设置一次,之后的请求会自动携带;可以设置cookie的有效期。   https://www.cnblogs.com/BruceV/p/11956676.html

  2、前端判断用户登录状态方法:https://www.cnblogs.com/momo798/p/11663349.html

 

posted @ 2019-06-28 17:19  吴飞ff  阅读(1384)  评论(0编辑  收藏  举报