首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于PassportJS的令牌认证/授权

基于PassportJS的令牌认证/授权
EN

Stack Overflow用户
提问于 2016-09-22 23:15:25
回答 1查看 859关注 0票数 1

我目前正在为将在多个平台上发布的应用程序开发一个基于Node/Express的API。因此,我需要基于令牌而不是会话/cookie对用户进行身份验证/授权。

在做了一些研究之后,我发现PassportJS是一个很好的插件,可以实现这样的功能。不幸的是,在浏览了几个小时的文档之后,对于基于原始令牌的身份验证似乎没有任何好的解释。

我不想使用像JWT这样的插件--只有Passport、Express和MongoDB。

如何使用Passport实现基于令牌的用户授权系统?我需要关于令牌生成、令牌传递和进程其余部分的解释。

请用简明的方式回答这个问题,就像你在向五年级的学生解释一样。

谢谢:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-23 18:39:02

我要试着把你的问题分成几个部分:

  • 配置Passport
  • 在何处使用护照
  • 杂项结束语

第一,一个小小的误解。护照不与代币系统捆绑在一起。护照被设计成配置了必须作为依赖项包含的策略。这是这样做的护照本身可以轻和模块化。当您需要本地(用户名和密码)身份验证策略时,我可能需要使用Twitter进行身份验证。因此,护照既不包括。我安装我需要的,并保持包装尺寸轻。

博士:没有办法不安装一个插件的护照。你需要包括某种策略。

我假设你想使用本地策略。所以,你需要passport-local.别担心,这本书是由“护照”的作者Jared Hanson写的。

我使用的大部分内容都来自Passport,特别是这里

让我们看看配置:

  • 安装Passport和passport-local模块。
  • 确保快递,MongoDB,节点,npm等都是最新的。

护照本地的基本配置文件如下所示:

代码语言:javascript
复制
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);
        });
    }
));

现在,您需要在网页上放置一个表单。下面是一个非常基本的例子:

代码语言:javascript
复制
<form action="/login" method="post">
    <div>
        <label>Username:</label>
        <input type="text" name="username" />
    </div>
    <div>
        <label>Password:</label>
        <input type="password" name="password" />
    </div>
    <div>
         <input type="submit" value="Log In" />
    </div>
</form>

接下来,你需要在你的快递应用程序中找到一条路线。有关此操作的更多信息,请参见快速路由文档

代码语言:javascript
复制
app.post('/login',
    passport.authenticate('local', { successRedirect: '/',
                                     failureRedirect: '/login' })
);

注意参数:默认情况下,LocalStrategy希望凭证位于用户名和密码参数中。有一些配置选项可以将它们命名为其他类型,例如使用电子邮件登录,而不是使用用户名。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39650240

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档