带有Mysql本地令牌的Nodejs Passport

时间:2017-02-24 10:25:49

标签: node.js express passport.js passport-local

我希望用户能够只使用令牌启动会话。无需输入密码。

我正在使用 passport-local-token

https://www.npmjs.com/package/passport-local-token

但似乎这将与Mongodb合作。

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

使用以下命令安装passport-jwt npm -i passport-jwt --save

https://jonathanmh.com/express-passport-json-web-token-jwt-authentication-beginners/

答案 1 :(得分:0)

我不确定在帖子问题上你是否100%在Passport JS上销售,但如果你只是在寻找基本的JSON网络令牌功能,那么结帐,jsonwebtoken

它们很漂亮,您可以设置Web应用程序,以便服务器生成令牌,传递回前端,然后将身份验证响应发送回服务器。您的令牌是在服务器端设置的,您创建的密码将用于加密和解密。我做了一个利用它们的小项目,这很酷。还有其他JSON网络令牌,但是由Auth0人创建的那个很好。

答案 2 :(得分:0)

首先,您可以使用护照或任何其他模块所需的任何类型的数据库 例如,假设我使用的是mysql数据库(MySQL npm package )我只需要将代码调整为sql标准

//Start Connection to DB
var mysql      = require('mysql');
var connection = mysql.createConnection({
    host     : 'localhost',
    user     : 'me',
    password : 'secret',
    database : 'my_db'
});

connection.connect();

passport.use('local-token', new LocalStrategy(
    function(token, done) {

        connection.query('SELECT accessToken from AccessToken where id: ?', [token],
            function (error, accessToken, fields) {
                if (error) return done(error);

                if (accessToken) {
                    if (!token.isValid(accessToken)) {
                        return done(null, false);
                    }

                    connection.query('SELECT * from User where id: ?', [accessToken.userId],
                        function (error, user, fields) {
                            if (error) return done(error);
                            if (!user) {
                                return done(null, false);
                            }

                            return done(null, user);
                        })
                } else {
                    return done(null);
                }
            });


    })
)