【发布时间】:2019-06-27 10:31:12
【问题描述】:
首先,这不是重复的,因为所有文档/答案都是针对 v1.0 之前的版本,它们似乎不起作用。
我正在尝试使用 passport 和 SailsJS v1.0 实现简单的身份验证。
问题是......因为我是新手,而且sailsjs (v1) 似乎缺乏在线示例,所以我很困惑。
应用程序应该像这样工作 -> 用户注册,验证他们的电子邮件,然后登录。登录后,用户会返回一个accessToken,他需要使用它来请求受保护的路线(通过Bearer 或别的东西)。
令牌应保存在数据库中,以便在用户更改密码等时使它们无效。
我怎样才能实现这样的目标?这就是我到目前为止所得到的(在线合并较旧/较新的示例)。
User.js(模型)
const bcrypt = require('bcryptjs');
module.exports = {
attributes: {
email: {
type: 'string',
required: true,
unique: true
},
username: {
type: 'string',
required: true,
unique: true
},
password: {
type: 'string',
required: true
},
tokens: {
collection: 'token',
via: 'userId'
}
},
customToJSON: function () {
return _.omit(this, ['password'])
},
beforeCreate: function (user, cb) {
bcrypt.genSalt(10, function (err, salt) {
bcrypt.hash(user.password, salt, null, function (err, hash) {
if (err) return cb(err);
user.password = hash;
return cb();
});
});
}
};
Token.js(模型)
module.exports = {
attributes: {
token: {
type: 'string',
required: true,
unique: true
},
userId: {
mode: 'user'
},
isValid: {
type: 'bool',
}
},
};
由于我对节点非常陌生,尤其是风帆,我有很多问题。
- 如果数据库中的令牌是 无效(或者我应该在注册/更改时只使用 1 个令牌 密码?)
- 如何实现实际的身份验证过程
使用
passport? - 令牌是否应为特定格式(字符数等) 安全原因?
- 是否有更好的方法来实现我想要实现的目标? (成为 更确切地说,我想要一个 REST Api 后端来为我的 ReactJS 前端提供服务 能够为 android/ios 等重用相同的后端)。
任何提示、链接、建议等将不胜感激。感谢并怜悯我缺乏知识!
编辑:这种方法会阻止我使用社交媒体登录(我也想在未来实现)?
【问题讨论】:
标签: node.js rest sails.js passport.js bearer-token