nodejs 的 session 简单使用

session的本质使用cookie来实现。

原理大概是:http 带来服务端提前设置 cookie,服务端拿到标示用户身份的cookie, 再去固定地点(数据库,文件)检索出对应的用户身份。把身份赋值给本次请求的request,在程序处理中就知晓了用户的身份了。(在PHP,ASP或者其他服务端语言中都自动帮你实现了)

实现cookie

  需要为每一个用户设置一个可以标示用户身份的cookie。可以使用如下规则

  注册邮箱MD5值+密码MD5值+随机码MD5值。(仅仅举例,这可能并不是一个好的方案)

服务端代码片段:

代码如下:

res.setHeader("Set-Cookie", ["sid="+newUser.toCookie()+";path=/;domain="+config.domain+";expires="+new Date("2030") ]);

cookie

代码如下:

sid=275fccab7935736ff68c95c3ddbfaaee|275fccab7935736ff68c95c3ddbfaaee|275fccab7935736ff68c95c3ddbfaaee

使用 cookie 获取用户身份,设置session

把所有非静态资源的请求都定向到这里处理。获取cookie,把cookie拆分并在数据库查找符合条件的用户。最后使用 next 跳转到下一个请求逻辑。

下一个请求逻辑就可是直接使用 req.session.user 来获取 user 对象了。

代码如下:

session:function(req, res, next){
     
    req.session = {};

if( req.cookies && req.cookies.sid ){

var a = req.cookies.sid.split("|");

var hexMail = a[0];
        var hexPwd = a[1];
        var hexRandom = a[2];

UserModel.hexFind(hexMail, hexPwd, hexRandom, function( status ){

//console.log("hexFind", status );
            if(status.code == "0"){
                //req.cookiesSelecter = cookiesSelecter;
                req.session.user = status.result;
               
            }
            next();
        });
       
    }else{
       
        next();


 
}

以上就是nodejs 的 session 简单使用的全部内容,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Nodejs中session的简单使用及通过session实现身份验证的方法

    session 不用多介绍,使一个http可以对应一个终端用户. session的本质使用cookie来实现. 原理大概是:http 带来服务端提前设置 cookie,服务端拿到标示用户身份的cookie, 再去固定地点(数据库,文件)检索出对应的用户身份.把身份赋值给本次请求的request,在程序处理中就知晓了用户的身份了.(在PHP,ASP或者其他服务端语言中都自动帮你实现了) 实现cookie 需要为每一个用户设置一个可以标示用户身份的cookie.可以使用如下规则 注册邮箱MD5值+密

  • PHP和NodeJs开发的应用如何共用Session

    首先了解下session的机制 客户端(浏览器中) cookie 作为键值,匹配服务器端的一个数据.然后客户端每次在 HTTP 请求里面带着那个 cookie,然后服务器端"理所当然"认为服务器端的这个数据是针对该客户端的. 某些系统喜欢把 session 内容编码后加密放在 cookie 里面 那么你可以 1.你可以共用 cookie,然后把数据放在 nodejs 和 拍黄片(Sorry,是PHP) 都可以取到的地方,例如 redis.影像中 php 默认的 session 是写他自

  • Nodejs 和Session 原理及实战技巧小结

    一 Cookie 因为HTTP协议是没有状态的,但很多情况下是需要一些信息的,比如在用户登陆后.再次访问网站时,没法判断用户是否登陆过.于是就有了cookies,用于在浏览器端保存用户数据,它有如下特点 1 是在客户端浏览器端才有的 2 用于记录信息,大小最大为4K字节 3 如果使用了cookies,那么任何对该域名的访问都会带上cookies 目前新型网站更多的采用浏览器缓存,cookie会存在一些问题,比如你每次往服务器提交请求时,都会带上cookie,无论是你访问的是不是静态图片. coo

  • 详解nodejs express下使用redis管理session

    Session实现原理 实现请求身份验证的方式很多,其中一种广泛接受的方式是使用服务器端产生的Session ID结合浏览器的Cookie实现对Session的管理,一般来说包括以下4个步骤: 1.服务器端的产生Session ID 2.服务器端和客户端存储Session ID 3.从HTTP Header中提取Session ID 4.根据Session ID从服务器端的Hash中获取请求者身份信息 使用Express和Redis对Session管理的实现 var session = requ

  • Nodejs进阶:express+session实现简易登录身份认证

    文档概览 本文基于express.express-session实现了简易的登录/登出功能,完整的代码示例可以在这里找到. 环境初始化 首先,初始化项目 express -e 然后,安装依赖. npm install 接着,安装session相关的包. npm install --save express-session session-file-store session相关配置 配置如下,并不复杂,可以见代码注释,或者参考官方文档. var express = require('expres

  • nodejs 的 session 简单使用

    session的本质使用cookie来实现. 原理大概是:http 带来服务端提前设置 cookie,服务端拿到标示用户身份的cookie, 再去固定地点(数据库,文件)检索出对应的用户身份.把身份赋值给本次请求的request,在程序处理中就知晓了用户的身份了.(在PHP,ASP或者其他服务端语言中都自动帮你实现了) 实现cookie 需要为每一个用户设置一个可以标示用户身份的cookie.可以使用如下规则 注册邮箱MD5值+密码MD5值+随机码MD5值.(仅仅举例,这可能并不是一个好的方案)

  • JAVAEE中用Session简单实现购物车功能示例代码

    Session简单实现购物车功能 这个小程序主要就3个页面,一个商品列表页面(HomeServlet),一个是提示加入购物车页面(AddCartTipServlet),一个是显示购物车清单页面(ShowCartServlet). HomeServlet页面: @WebServlet({ "/HomeServlet", "/home" }) public class HomeServlet extends HttpServlet { private static fi

  • 使用nodejs+express实现简单的文件上传功能

    1.建立express项目 express -e nodejs-uploadfile 2.下载multer中间件 npm i multer or yarn multer 3.在routes/index.js中引用multer,由于还要使用到文件操作,还要引用fs模块,并指定文件上传目录 const multer = require('multer'); const fs = require('fs'); const UPLOAD_PATH = './uploads' 单文件上传: index.h

  • nodejs实现超简单生成二维码的方法

    本文实例讲述了nodejs实现超简单生成二维码的方法.分享给大家供大家参考,具体如下: 一开始使用node-qrcode(https://github.com/soldair/node-qrcode),结果安装的时候需要安装python,且不支持python3.0以上,安装python2.0的时候又需要安装其他的环境,所以放弃了. 最后选择了一个小众的插件qr-image(https://github.com/alexeyten/qr-image) 前台页面如下 views/index.ejs

  • nodejs实现的简单web服务器功能示例

    本文实例讲述了nodejs实现的简单web服务器功能.分享给大家供大家参考,具体如下: 前端js代码: <script src="jquery-1.12.1.js"></script> <script type="text/javascript"> $.ajax({ url:'http://192.168.0.114:3000',//服务器地址 type:'post', timeout:30, dataType:'json', d

  • 通过Nodejs搭建网站简单实现注册登录流程

    1. 使用Backbone实现前端hash路由 初步设想将注册和登录作为两个不同的url实现,但登录和注册功能的差距只有form表单部分,用两个url实现显然开销过大,所以最终方案为使用hash作为前端路由,根据url的hash值切换相应的表单显示. 很多致力于SPA开发的前端框架都具备hash路由功能,考虑到嗨猫本身是一个类博客.偏重静态展示的网站,所以最后选择了轻量级的Backbone最为前端框架. Backbone实现hash路由的代码很简单: let $formBox = $('.box

  • Nodejs+express+ejs简单使用实例代码

    前几天主要看了express,今天开始接触ejs,jade还是不想看了,O(∩_∩)O哈哈~ var express = require("express"); var ejs = require('ejs'); //var fs = require("fs"); //var bodyParser = require('body-parser'); var app = express(); app.engine('html', ejs.renderFile); ap

  • NodeJS创建最简单的HTTP服务器

    ☆ 引子 var http = require('http'); http.createServer(function(request, response){ response.writeHead(200, { 'Content-Type': 'text-plain' }); response.end('Hello World\n'); }).listen(8124); 对这个http这个最顶层的对象有个.createServer服务器的方法. 创建了一个服务器,跟服务器相关的就两个事件. 请求

随机推荐