我希望用户能够只使用令牌启动会话。无需输入密码。
我正在使用 passport-local-token
https://www.npmjs.com/package/passport-local-token
但似乎这将与Mongodb合作。
有什么想法吗?
答案 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);
}
});
})
)