Express Session实现登录验证功能(附代码)

这次给大家带来Express Session实现登录验证功能(附代码),Express Session实现登录验证功能的注意事项有哪些,下面就是实战案例,一起来看一下。

对于使用Express和Session实现登录验证也是很多人在探求的,这次文章就给大家简单的介绍下怎么使用Express和Session实现登录验证,具体实现代码是什么?一起来了解下。

1. 写在前面

当我们登录了一个网站,在没有退出登录的情况下,我们关闭了这个网站 ,过一段时间,再次打开这个网站,依然还会是登录状态。这是因为,当我们登录了一个网站,服务器会保存我们的登录状态,直到我们退出登录,或者保存的登录状态过期。那服务器是通过什么存储我们的登录状态的呢? 答案就是 Session ,服务通过 Session 能够记录每个客户端连接的状态。关于 Session 的原理,在这就不多说了,本文主要介绍在 Express 框架中,如何使用 Session 来实现用户登录身份验证。

2. 环境配置

在Node 环境中, 并没有集成 Express 和 Session 的库,因此需要进行安装,首先进入建立一个项目目录,然后在项目根目录中,利用下面命令安装四个模块。

1) Express

该模块能够让我们快速的搭建一个 Web 开发框架。

2) body-parser

该模块是 Express 模块的中间件,方便我们解析浏览器发送来的 body 数据。

3) express-session

该模块也是 Express 模块中间件,方便我们处理客户端的 session。

4) ejs

该模块是一个渲染引擎。 方便我们将后台变量数据绑定到前台页面上。

安装如下:

npm install express --savenpm install body-parser --savenpm install express-session --savenpm install ejs --save

登录后复制

3. 登录与验证

Session 能够标记客户端在服务器上的状态。利用这一点,我们能够实现客户端的登录验证。Session 登录验证的流程大致为:客户端若在未登录的状态下请求主页,那么服务器将该请求重定向到登录页面;客户端在登录后,服务器需要记录保存该客户端的登录状态,并给予一个活动期限,这样下一次服务器请求主页的时候,就能够判断该客户端的登录状态,若登录状态有效,直接返回客户端需要的页面,否则重定向到登录页面。

对于 Session 的过期时间,如果没有设置 Session 的过期时间,服务器会根据自己配置中默认有效期,将长期不与服务器交互的 Session 进行删除。

下面贴出实例代码,界面比较简单,服务器后台代码注释写的很清楚,因此就不再进行说明了。

项目的目录结构如下:

登录页面(login.html) 代码如下:

    Title          用户名:  
密码:

登录后复制

主页(home.html)代码如下:

    Title  

用户名: 退出登录

登录后复制

服务器(app.js)代码如下:

/** * Created by tjm on 9/7/2017. */var express = require('express');var app = express();var session = require('express-session');var bodyparser = require('body-parser');// 下面三行设置渲染的引擎模板app.set('views', dirname); //设置模板的目录app.set('view engine', 'html'); // 设置解析模板文件类型:这里为html文件app.engine('html', require('ejs').express); // 使用ejs引擎解析html文件中ejs语法app.use(bodyparser.json()); // 使用bodyparder中间件,app.use(bodyparser.urlencoded({ extended: true }));// 使用 session 中间件app.use(session({  secret : 'secret', // 对session id 相关的cookie 进行签名  resave : true,  saveUninitialized: false, // 是否保存未初始化的会话  cookie : {    maxAge : 1000 * 60 * 3, // 设置 session 的有效时间,单位毫秒  },}));// 获取登录页面app.get('/login', function(req, res){  res.sendFile(dirname + '/login.html')});// 用户登录app.post('/login', function(req, res){  if(req.body.username == 'admin' && req.body.pwd == 'admin123'){    req.session.userName = req.body.username; // 登录成功,设置 session    res.redirect('/');  }  else{    res.json({ret_code : 1, ret_msg : '账号或密码错误'});// 若登录失败,重定向到登录页面  }});// 获取主页app.get('/', function (req, res) {  if(req.session.userName){ //判断session 状态,如果有效,则返回主页,否则转到登录页面    res.render('home',{username : req.session.userName});  }else{    res.redirect('login');  }})// 退出app.get('https://www.php.cn/logout', function (req, res) {  req.session.userName = null; // 删除session  res.redirect('login');});app.listen(8000,function () {  console.log('http://127.0.0.1:8000')})

登录后复制

到此,session 实现登录验证就完成。上面的例子 session 是保存在服务内存中,当然还可以保存在文件或数据库中,只需要配置 session 中间件即可。

app.use(session({  secret: 'secretkey',  store: new MongoStore({    db: 'sessiondb'  })}));

登录后复制

相信看了本文案例你已经掌握了方法,更多精彩请关注【创想鸟】其它相关文章!

推荐阅读:

node.js实现读写同步功能

怎么比对两个字符串中的相同数据

以上就是Express Session实现登录验证功能(附代码)的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2771001.html

(0)
上一篇 2025年3月8日 12:46:30
下一篇 2025年3月8日 12:46:36

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • nodejs操作express中的next

    这次给大家带来nodejs操作express中的next,nodejs操作express中next的注意事项有哪些,下面就是实战案例,一起来看一下。 相信很多人对于nodejs对express中next不是很了解,大多数人不知道其中的nex…

    编程技术 2025年3月8日
    200
  • 使用JS做出60秒后重新发送验证码功能

    这次给大家带来使用JS做出60秒后重新发送验证码功能,JS做出60秒后重新发送验证码功能的注意事项有哪些,下面就是实战案例,一起来看一下。 //settime($(“#getPhoneCode”),60);function settime(…

    编程技术 2025年3月8日
    200
  • Vue项目中怎么引用验证码

    这次给大家带来Vue项目中怎么引用验证码,Vue项目中引用验证码的注意事项有哪些,下面就是实战案例,一起来看一下。 什么是腾讯验证码?它长这个样子……:point_down:   最近公司项目要求引入腾讯云验证,要求是这样的: 为了防止别人…

    2025年3月8日 编程技术
    200
  • node实现登录时图片验证码功能

    这次给大家带来node实现登录时图片验证码功能,node实现登录时图片验证码功能的注意事项有哪些,下面就是实战案例,一起来看一下。 实现这里的图形验证码我是用的node里svg-captcha模块,可以全部支持字符和数字,全平台支持,用起来…

    2025年3月8日 编程技术
    200
  • JS里如何验证E-mail正确地址

    这次给大家带来JS里如何验证E-mail正确地址,JS里验证E-mail正确地址的注意事项有哪些,下面就是实战案例,一起来看一下。 最近做了一个前端的项目,要求:输入的数据必须包含 @ 符号和点号(.)。同时,@ 不可以是邮件地址的首字符,…

    2025年3月8日
    200
  • vue iview动态路由与权限验证步骤详解

    这次给大家带来vue iview动态路由与权限验证步骤详解,使用vue iview动态路由与权限验证的注意事项有哪些,下面就是实战案例,一起来看一下。 github上关于vue动态添加路由的例子很多,本项目参考了部分项目后,在iview框架…

    编程技术 2025年3月8日
    200
  • vue实现验证码倒计时功能

    这次给大家带来vue实现验证码倒计时功能,vue实现验证码倒计时功能的注意事项有哪些,下面就是实战案例,一起来看一下。     上网上搜了一下,也把他们的代码试了一下,自己出了很多问题。所以,需要写一篇基础入门的文章,避免后面人采坑。   …

    2025年3月8日
    200
  • node+token实现验证

    这次给大家带来node+token实现验证,node+token实现验证的注意事项有哪些,下面就是实战案例,一起来看一下。 最近研究了下基于token的身份验证,并将这种机制整合在个人项目中。现在很多网站的认证方式都从传统的seesion+…

    编程技术 2025年3月8日
    200
  • express默认日志组件morgan使用详解

    这次给大家带来express默认日志组件morgan使用详解,使用express默认日志组件morgan的注意事项有哪些,下面就是实战案例,一起来看一下。 章节概览 morgan是express默认的日志中间件,也可以脱离express,作…

    编程技术 2025年3月8日
    200
  • Vue如何调用第三方验证码

    这次给大家带来Vue如何调用第三方验证码,Vue调用第三方验证码的注意事项有哪些,下面就是实战案例,一起来看一下。 什么是腾讯验证码?它长这个样子……:point_down:   最近公司项目要求引入腾讯云验证,要求是这样的: 为了防止别人…

    2025年3月8日 编程技术
    200

发表回复

登录后才能评论