当前位置: 首页 > news >正文

济南城乡建设网站搜索引擎和浏览器

济南城乡建设网站,搜索引擎和浏览器,袜子的网站建设方案,wordpress登录页名全面鉴权 这一节我们来介绍一下 Passport.js,这是一个强大的 NodeJS 的认证中间件 Passport.js 提供了多种认证方式,账号密码、OpenID、ApiKey、JWT、OAuth、三方登录等等。 使用 Passport.js 认证要配置三个部分: 认证策略中间件会话 接…

全面鉴权

这一节我们来介绍一下 Passport.js,这是一个强大的 NodeJS 的认证中间件

Passport.js 提供了多种认证方式,账号密码、OpenID、ApiKey、JWT、OAuth、三方登录等等。

使用 Passport.js 认证要配置三个部分:

  1. 认证策略
  2. 中间件
  3. 会话

接下来我们以 账号密码 认证为例,来演示一下 Passport.js 的使用

准备工作

新建一个基础的 evp-express 项目

安装依赖

  1. 安装 passport.js
npm install passport
  1. 安装 local 策略
npm install passport-local

创建页面

在 public 目录下面创建 index.html, fail.html, home.html 3个页面:

index.html:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><form action="/login" method="post"><input name="username" placeholder="username..." /><input name="password" placeholder="password..." /><button type="submit">Login</button></form>
</body>
</html>

fail.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Fail</title>
</head>
<body><h1>Fail</h1><a title="gologin" href="/views">Go login</a>
</body>
</html>

home.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Home</title>
</head>
<body><h1>Hello, Home!</h1>
</body>
</html>

设置静态目录

app.js:

const config = require('./config.js').get();
//...
app.use('/views', express.static(config.public, { extensions: ['html'] }));

这个 extensions 选项用于允许访问静态页面不带 html 后缀。

开启Session

app.js:

//...
app.use(session({secret: 'secret',resave: false,saveUninitialized: true
}));

初始化passport

app.js:

const passport = require('passport');//...
app.use(passport.initialize());
app.use(passport.session());

设置认证

步骤:

  1. 使用策略,规定认证过程,done是回调函数,可以接收三个参数:
  2. 异常
  3. 在会话中保存的用户信息,填 false 代表认证失败
  4. 其余数据,比如传递信息
  5. 序列化用户信息
  6. 反序列化用户信息
    app.js:
const LocalStrategy = require('passport-local').Strategy;//...
passport.use(new LocalStrategy(function verify(username, password, done) {if (username == 'root' && password == 'root') {return done(null, { username, password});}return done(null, false, {message: "None"});}
))passport.serializeUser((user, cb) =>{process.nextTick(()=>{cb(null, {username: user.username, password: user.password})})
})passport.deserializeUser((user, cb) => {process.nextTick(()=>{return cb(null, user);});
});

编写登录接口

router/index.js:

const { Json, Form, Multi, FromPlus } = require('../midwares/bodyParser');//...
router.post('/login', FromPlus, passport.authenticate('local', {failureRedirect: '/views/fail',failureFlash: false
}), (req, res, next) => {res.redirect('/views/home');
});

前端页面在表单中填写登录信息,先按照表单格式解析一下,然后再加入 passport 的认证中间件,指定策略为 local, 并指定认证失败跳转到 fail.html,成功则重定向到 homte.html,这个可以和失败重定向一样,作为 successRedirect 选项写到上面。

保护接口

编写一个判断时候登录的中间件函数:

function isLogined(req, res, next) {if (req.isAuthenticated()) {return next();}res.redirect('/views/');
}

/ 路由进行登录保护:

router.get('/', isLogined, (req, res, next) => {logger.info('Hello World!');res.json(Resp.ok('Hello World!', 1, null));
});

测试

此时运行项目,在浏览器中访问http://127.0.0.1:8080,会被重定向到登录界面,登录成功后在地址栏可以正常访问到这个被保护的路由,登录失败则会被重定向到 fail 页面。

Passport.js 的更多用法请自行探索,详见官方文档:https://www.passportjs.org/docs/

下一节-软件测试

http://www.dt0577.cn/news/28307.html

相关文章:

  • 凡科建站公司山东大学经济研究院
  • 网站建设 食品东莞网站推广宣传
  • 玩车 wordpress自动app优化下载
  • 行业网站开发费用沈阳企业网站seo公司
  • 邢台网站建设03191688长沙网络推广公司
  • 嘉兴网站关键词推广谷歌搜索引擎怎么才能用
  • 深圳网站制作公司信息百度关键词seo
  • linux 下载wordpress肥城市区seo关键词排名
  • 做网站建设一条龙全包优化近义词
  • 哔哩哔哩视频推广seo优化自动点击软件
  • 怎么确定网站的关键词推广软文范例
  • 温州企业网站开发网络营销的基本职能
  • 南非网站域名百度网站提交入口网址
  • 企业网站找谁做网页制作工具有哪些
  • 邯郸网络教研平台登录重庆seo推广
  • 买了域名怎么做网站建个网站费用多少
  • 南宁市网站设计青岛seo排名公司
  • 湖南专业做网站公司重庆森林经典台词罐头
  • 网站销售外贸网络推广经验
  • 杭州微信网站开发网络的推广
  • 北京好的做网站的公司有哪些湘潭关键词优化公司
  • 公司网站荣誉墙怎么做网站seo思路
  • 网站改版 大量旧页面百度贴吧入口
  • 海南网站建设介绍英文网站设计公司
  • 三网站建设神马推广登录
  • 什么网站从做系统抖音seo关键词优化怎么做
  • 中山商城型网站建设站长之家是什么
  • 网站两侧广告品牌营销策略案例
  • 做期货的新闻网站哪里有竞价推广托管
  • 一个人可以备案几个网站淘宝关键词怎么优化