护照js通过url进行身份validation

我为我的应用程序使用Express JS和Passport JS。

我想让新用户有机会自动login一次,通过特定的URL。 我可以从URL中获取用户从数据库中的信息,所以我有一个用户对象(ID,电子邮件,哈希密码等),但我不知道如何使用护照来validation用户和login。

我试图执行下面的函数与我从数据库中获得的用户对象:

req.login(user, function(err) { if (err) { return next(err); } return res.redirect('/users/' + req.user.username); }); 

来源: http : //passportjs.org/guide/login/

但是这没有用。 猜猜这只是因为用户对象包含哈希密码…谁曾经尝试过,并可以告诉我它是如何工作的任何人?

也许https://github.com/yarax/passport-url策略会对你有用

基本逻辑从URL获取参数

 UrlStrategy.prototype.authenticate = function(req, options) { var self = this; function verified(err, user, info) { if (err) { return self.redirect(self.failRedirect); } // redirect in fail self.success(user, info); // done callback } this._verify(req.query[this.varName], verified); }; 

完整的例子在这里https://github.com/yarax/passport-url/blob/master/index.js

嘿,所以@Rax Wunter是完全正确的,我刚刚看到这个问题,并且想说这不是一个好主意,要做你在这里做的事情。 你永远不应该在一个URLstring中传递一个哈希密码。 这是一个非常糟糕的安全问题。

你应该做的是使用类似于JSON Web令牌 (JWT)的东西。 有很多图书馆可以帮助解决这个问题,但基本stream程如下所示:

上面的这个策略真的很棒,因为这意味着你可以安全地以可信的方式login某个人,而不会危及安全性或泄露密码哈希。