session 不用多介绍,使一个http可以对应一个终端用户。

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实现身份验证

nodejs express session 身份验证

1)引入模块

var session = require('express-session');

var cookieParser = require('cookie-parser');

2)应用cookie及session

app.use(cookieParser());

app.use(session({

resave: true, // don't save session if unmodified

saveUninitialized: false, // don't create session until something stored

secret: 'love'

}));

3)请求时,应用身份验证

app.use(function(req,res,next){

if (!req.session.user) {

if(req.url=="/login"){

next();//如果请求的地址是登录则通过,进行下一个请求

}

else

{

res.redirect('/login');

}

} else if (req.session.user) {

next();

}

});

4)登陆设计

app.get('/login',function(req,res){

res.render("login");

});

app.post('/login',function(req,res){

if(req.body.username=="love" && req.body.password=="love"){

var user = {'username':'love'};

req.session.user = user;

res.redirect('/admin/app/list');

}

else

{

res.redirect('/login');

}

});

app.get('/logout',function(req,res){

req.session.user = null;

res.redirect('/login');

});

PHP nodejs session,Nodejs中session的简单使用及通过session实现身份验证的方法相关推荐

  1. java ldap操作实例_Java Spring Security示例教程中的2种设置LDAP Active Directory身份验证的方法...

    java ldap操作实例 LDAP身份验证是世界上最流行的企业应用程序身份验证机制之一,而Active Directory (Microsoft为Windows提供的LDAP实现)是另一种广泛使用的 ...

  2. Java Spring Security示例教程中的2种设置LDAP Active Directory身份验证的方法

    LDAP身份验证是全球范围内最流行的企业应用程序身份验证机制之一,而Active Directory (Microsoft针对Windows的LDAP实现)是另一种广泛使用的LDAP服务器. 在许多项 ...

  3. ASP.NET Core 项目简单实现身份验证及鉴权

    环境 VS 2017 ASP.NET Core 2.2 目标 以相对简单优雅的方式实现用户身份验证和鉴权,解决以下两个问题: 无状态的身份验证服务,使用请求头附加访问令牌,几乎适用于手机.网页.桌面应 ...

  4. asp.net中常用的几种身份验证方式

    前言 在B/S系统开发中,经常需要使用"身份验证".因为web应用程序非常特殊,和传统的C/S程序不同,默认情况下(不采用任何身份验证方式和权限控制手段),当你的程序在互联网/局域 ...

  5. 【FBA】SharePoint 2013自定义Providers在基于表单的身份验证(Forms-Based-Authentication)中的应用...

    //http://www.cnblogs.com/OceanEyes/p/custom-provider-in-sharepoint-2013-fba-authentication.html 由于项目 ...

  6. aws rds监控慢sql_AWS RDS SQL Server中的高级Windows身份验证配置

    aws rds监控慢sql This article will cover advanced configurations for Windows Authentication in AWS RDS ...

  7. 使用Xamarin.Android中的Google登录OAuth 2.0对用户进行身份验证

    什么是用户认证? (What is User Authentication?) There is a user base associated with every app that is avail ...

  8. Windows10家庭版 解决IIS 万维网安全中没有Windows身份验证

    Windows10家庭版 解决IIS 万维网服务安全性中没有Windows身份验证(Windows Authentication) 打开启动或关闭Windows功能,IIS菜单下万维网服务的安全性缺少 ...

  9. nodejs的koa中cookie和session的使用,cookie和session的区别

    1.cookie是存储于访问者的计算机中的数据,用于同一浏览器访问同一域的时候共享数据 2.HTTP是无状态协议.也就是说:当你浏览了一个页面,然后跳转到同一个网站的另一个页面,服务器无法认识到这是同 ...

  10. 解决vista和win7在windows服务中交互桌面权限问题:穿透Session 0 隔离

    服务(Service)对于大家来说一定不会陌生,它是Windows 操作系统重要的组成部分.我们可以把服务想像成一种特殊的应用程序,它随系统的"开启-关闭"而"开始-停止 ...

最新文章

  1. 女朋友存好多网上男明星的照片,我准备用python全部换成我的脸
  2. 特殊字符、Date、JS应用
  3. 注意啦!10 个你需要了解的 Linux 网络和监控命令
  4. [CSS] 点击事件触发的动画
  5. ubuntu安装portainer_Docker【二】:Docker管理工具Portainer
  6. jdk 1.8 内存可见性_JDK 14中的常规,安全和确定性外部内存访问
  7. 英语口语 week11 Tuesday
  8. 【面试准备·2】webpack
  9. Oracle listener
  10. 国内首个 Serverless 数据库来了,技术架构全揭秘!
  11. Revit软件安装族库/族样板/项目样板默认位置在哪?(详细说明)
  12. css vue 内联_Vue学习之路第十二篇:为页面元素设置内联样式
  13. linux内核的学习方法
  14. 华为鸿蒙操作系统国美通讯,国美通讯(600898)03月14日14:30大单揭秘
  15. HTTP协议的详细介绍
  16. Mac M1安装ta-lib
  17. 神经网络中Batch Size的理解
  18. DS1302的使用方式 及 51单片机连接DS1302的驱动程序
  19. 解决vue.esm.js?efeb:628 [Vue warn]: Failed to mount component: template or render function not defined
  20. 奥巴马筹款网站的制作过程

热门文章

  1. HTML Agility Pack 搭配 ScrapySharp,彻底解除Html解析的痛苦
  2. Linux运维基础入门(二):网络基础知识梳理02
  3. 关于C++的字符串操作
  4. NOIP2016愤怒的小鸟 题解报告 【状压DP】
  5. 【转】Java 中正确使用 hashCode 和 equals 方法
  6. 顶会集结+深度解析:医疗+AI如此火爆,NLP如何赋能?
  7. 一名南京985AI硕士,CSDN博客专家
  8. 赛尔原创 | ACL20 用于多领域端到端任务型对话系统的动态融合网络
  9. 每日一题[LeetCode 689]三个无重叠子数组的最大和
  10. 论文赏析[TACL17]基于中序转移的成分句法分析