栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

本地护照和node-jwt-simple

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

本地护照和node-jwt-simple

我想到了!

首先,您需要实施正确的策略。就我而言,是LocalStrategy,您需要提供验证逻辑。例如,让我们在护照本地使用一个。

var passport = require('passport')  , LocalStrategy = require('passport-local').Strategy;passport.use(new LocalStrategy(  function(username, password, done) {    User.findOne({ username: username }, function(err, user) {      if (err) { return done(err); }      if (!user) {        return done(null, false, { message: 'Incorrect username.' });      }      if (!user.validPassword(password)) {        return done(null, false, { message: 'Incorrect password.' });      }      return done(null, user);    });  }));

您提供的验证回电

function(username, password, done)
将帮助您找到用户并检查密码是否匹配(超出问题和我的答案的范围)

Passport.js希望它能起作用,其中之一是您在策略中回馈用户。我试图更改代码的那部分,那是错误的。回调期望

false
验证是否失败,以及
object
(成功的用户)是否成功。

现在…如何整合JWT?

在您的登录路径中,您将必须处理成功的身份验证或不成功的身份验证。您需要在此处添加JWT令牌创建。像这样:

(请记住禁用会话,否则您将必须实现序列化和反序列化功能。如果您不持久化会话,则不需要那些,如果您使用的是基于令牌的身份验证,则不需要这些)

来自本地护照示例:(添加了JWT令牌)

// POST /login//   This is an alternative implementation that uses a custom callback to//   achieve the same functionality.app.post('/login', function(req, res, next) {  passport.authenticate('local', function(err, user, info) {    if (err) { return next(err) }    if (!user) {      return res.json(401, { error: 'message' });    }    //user has authenticated correctly thus we create a JWT token     var token = jwt.enpre({ username: 'somedata'}, tokenSecret);    res.json({ token : token });  })(req, res, next);});

就是这样!现在,当您调用/
login和POST用户名和密码(应始终通过SSL)时,上面的第一个代码段将尝试根据您提供的用户名查找用户,然后检查密码是否匹配(当然,您需要根据您的需要进行更改)。

之后,您的登录路由将被调用,在那里您可以负责返回错误或有效令牌。

希望这会帮助某人。如果我犯了任何错误或忘记了什么,请告诉我。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/469175.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号