PHP nodejs session,Nodejs中session的简单使用及通过session实现身份验证的方法
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实现身份验证的方法相关推荐
- java ldap操作实例_Java Spring Security示例教程中的2种设置LDAP Active Directory身份验证的方法...
java ldap操作实例 LDAP身份验证是世界上最流行的企业应用程序身份验证机制之一,而Active Directory (Microsoft为Windows提供的LDAP实现)是另一种广泛使用的 ...
- Java Spring Security示例教程中的2种设置LDAP Active Directory身份验证的方法
LDAP身份验证是全球范围内最流行的企业应用程序身份验证机制之一,而Active Directory (Microsoft针对Windows的LDAP实现)是另一种广泛使用的LDAP服务器. 在许多项 ...
- ASP.NET Core 项目简单实现身份验证及鉴权
环境 VS 2017 ASP.NET Core 2.2 目标 以相对简单优雅的方式实现用户身份验证和鉴权,解决以下两个问题: 无状态的身份验证服务,使用请求头附加访问令牌,几乎适用于手机.网页.桌面应 ...
- asp.net中常用的几种身份验证方式
前言 在B/S系统开发中,经常需要使用"身份验证".因为web应用程序非常特殊,和传统的C/S程序不同,默认情况下(不采用任何身份验证方式和权限控制手段),当你的程序在互联网/局域 ...
- 【FBA】SharePoint 2013自定义Providers在基于表单的身份验证(Forms-Based-Authentication)中的应用...
//http://www.cnblogs.com/OceanEyes/p/custom-provider-in-sharepoint-2013-fba-authentication.html 由于项目 ...
- aws rds监控慢sql_AWS RDS SQL Server中的高级Windows身份验证配置
aws rds监控慢sql This article will cover advanced configurations for Windows Authentication in AWS RDS ...
- 使用Xamarin.Android中的Google登录OAuth 2.0对用户进行身份验证
什么是用户认证? (What is User Authentication?) There is a user base associated with every app that is avail ...
- Windows10家庭版 解决IIS 万维网安全中没有Windows身份验证
Windows10家庭版 解决IIS 万维网服务安全性中没有Windows身份验证(Windows Authentication) 打开启动或关闭Windows功能,IIS菜单下万维网服务的安全性缺少 ...
- nodejs的koa中cookie和session的使用,cookie和session的区别
1.cookie是存储于访问者的计算机中的数据,用于同一浏览器访问同一域的时候共享数据 2.HTTP是无状态协议.也就是说:当你浏览了一个页面,然后跳转到同一个网站的另一个页面,服务器无法认识到这是同 ...
- 解决vista和win7在windows服务中交互桌面权限问题:穿透Session 0 隔离
服务(Service)对于大家来说一定不会陌生,它是Windows 操作系统重要的组成部分.我们可以把服务想像成一种特殊的应用程序,它随系统的"开启-关闭"而"开始-停止 ...
最新文章
- 女朋友存好多网上男明星的照片,我准备用python全部换成我的脸
- 特殊字符、Date、JS应用
- 注意啦!10 个你需要了解的 Linux 网络和监控命令
- [CSS] 点击事件触发的动画
- ubuntu安装portainer_Docker【二】:Docker管理工具Portainer
- jdk 1.8 内存可见性_JDK 14中的常规,安全和确定性外部内存访问
- 英语口语 week11 Tuesday
- 【面试准备·2】webpack
- Oracle listener
- 国内首个 Serverless 数据库来了,技术架构全揭秘!
- Revit软件安装族库/族样板/项目样板默认位置在哪?(详细说明)
- css vue 内联_Vue学习之路第十二篇:为页面元素设置内联样式
- linux内核的学习方法
- 华为鸿蒙操作系统国美通讯,国美通讯(600898)03月14日14:30大单揭秘
- HTTP协议的详细介绍
- Mac M1安装ta-lib
- 神经网络中Batch Size的理解
- DS1302的使用方式 及 51单片机连接DS1302的驱动程序
- 解决vue.esm.js?efeb:628 [Vue warn]: Failed to mount component: template or render function not defined
- 奥巴马筹款网站的制作过程
热门文章
- HTML Agility Pack 搭配 ScrapySharp,彻底解除Html解析的痛苦
- Linux运维基础入门(二):网络基础知识梳理02
- 关于C++的字符串操作
- NOIP2016愤怒的小鸟 题解报告 【状压DP】
- 【转】Java 中正确使用 hashCode 和 equals 方法
- 顶会集结+深度解析:医疗+AI如此火爆,NLP如何赋能?
- 一名南京985AI硕士,CSDN博客专家
- 赛尔原创 | ACL20 用于多领域端到端任务型对话系统的动态融合网络
- 每日一题[LeetCode 689]三个无重叠子数组的最大和
- 论文赏析[TACL17]基于中序转移的成分句法分析