MongoDB 用户架构设计身份验证使用(本地,google,facebook
MongoDB user schema design auth using (local, google, facebook
我希望我的用户使用本地、google 或 facebook 登录,我想知道如何构建我的用户架构以启用 google 和 facebook 身份验证,以及稍后保存数据(如电子邮件、姓名等)来自 facebook 的 return/google。这是我的架构 table:
const bcrypt = require('bcryptjs')
const userSchema = mongoose.Schema({
name:{
type: String,
required : true
},
email:{
type: String,
required : true,
unique: true,
},
password:{
type: String,
required : true,
},
isAdmin:{
type: Boolean,
required : true,
default: false
},
isInfluencer:{
type: Boolean,
required : true,
default: false
},
}, {
timestamps: true
})
userSchema.methods.matchPassword = async function (enteredPassword) {
return await bcrypt.compare(enteredPassword, this.password)
}
userSchema.pre('save', async function (next) {
if (!this.isModified('password')) {
next()
}
const salt = await bcrypt.genSalt(10)
this.password = await bcrypt.hash(this.password, salt)
})
const user = mongoose.model('User', userSchema)
module.exports = user ```
It's my first time to implement multiple auth options and haven't found good docs on the net. Any help will be appreciated. Thanks in advance!!!
没有“神奇”的解决方案,您必须将逻辑合并到您的应用程序中,我建议您保存 3 (4) 个不同的字段 email x password
、google id
和 facebook id
.根据用户选择的身份验证方法,您将获取并保存正确的字段。
需要考虑的事项。
password:{
type: String,
required : true,
},
不需要,因为 google/facebook 身份验证不需要它。
email:{
type: String,
required : true,
unique: true,
},
应该有一个 sparse: true
字段,否则 null
值将计入索引,您将从 google 身份验证 / facebook 身份验证 (除非您还打算保存他们的电子邮件,如果是这种情况,您需要在登录中添加更多逻辑以处理使用电子邮件注册的用户的“合并”,然后在使用与该电子邮件相关联的 faceook 注册后 X 次电子邮件。)
我希望我的用户使用本地、google 或 facebook 登录,我想知道如何构建我的用户架构以启用 google 和 facebook 身份验证,以及稍后保存数据(如电子邮件、姓名等)来自 facebook 的 return/google。这是我的架构 table:
const bcrypt = require('bcryptjs')
const userSchema = mongoose.Schema({
name:{
type: String,
required : true
},
email:{
type: String,
required : true,
unique: true,
},
password:{
type: String,
required : true,
},
isAdmin:{
type: Boolean,
required : true,
default: false
},
isInfluencer:{
type: Boolean,
required : true,
default: false
},
}, {
timestamps: true
})
userSchema.methods.matchPassword = async function (enteredPassword) {
return await bcrypt.compare(enteredPassword, this.password)
}
userSchema.pre('save', async function (next) {
if (!this.isModified('password')) {
next()
}
const salt = await bcrypt.genSalt(10)
this.password = await bcrypt.hash(this.password, salt)
})
const user = mongoose.model('User', userSchema)
module.exports = user ```
It's my first time to implement multiple auth options and haven't found good docs on the net. Any help will be appreciated. Thanks in advance!!!
没有“神奇”的解决方案,您必须将逻辑合并到您的应用程序中,我建议您保存 3 (4) 个不同的字段 email x password
、google id
和 facebook id
.根据用户选择的身份验证方法,您将获取并保存正确的字段。
需要考虑的事项。
password:{
type: String,
required : true,
},
不需要,因为 google/facebook 身份验证不需要它。
email:{
type: String,
required : true,
unique: true,
},
应该有一个 sparse: true
字段,否则 null
值将计入索引,您将从 google 身份验证 / facebook 身份验证 (除非您还打算保存他们的电子邮件,如果是这种情况,您需要在登录中添加更多逻辑以处理使用电子邮件注册的用户的“合并”,然后在使用与该电子邮件相关联的 faceook 注册后 X 次电子邮件。)