护照本地猫鼬与确切的电子邮件不匹配
Passport local mongoose not matching exact email
我身边用的是mongodb和node js。我正在使用 passport local mongoose 到 register
和 login
用户。
现在我面临的问题是:注册时。如果用户使用 rajat.test@gmail.com
注册并尝试使用 rajat.Test@gmail.com
登录。然后应用程序将访问权限授予用户,这是错误的。因为在注册时,用户给出的所有字母都是小写的。
所以我只想确认一下,如何在护照本地猫鼬中进行身份验证时启用区分大小写?
下面是我的注册码和登录码
注册
const user = new User(req.body);
try {
await User.register(user, req.body.password);
res.status(302).json({message: MESSAGE.USER_REGISTRATION_SUCCESS});
} catch(err) {
handleErrors(res, err);
}
登录
const authRes = await User.authenticate()(req.body.email, req.body.password);
if (authRes && authRes.user) {
const token = jwt.sign(authRes, config.SECRET);
if (!authRes.user)
res.status(400).json(authRes);
else{
res.status(302).json({user: authRes.user, token: `JWT ${token}`});
}
} else {
res.status(401).json({error: MESSAGE.INVALID_LOGIN_ERROR});
}
使用MongoDB
在登录功能中查找用户文档时不区分大小写regular expression match。
db.users.find( { email: { $regex: new RegExp(req.body.email, 'i') } } )
使用Javascript
将您的电子邮件字符串转换为小写,然后在登录功能上找到您的用户文档。
db.users.find( { email: req.body.email.toLowerCase() } )
注意:在这种方法中,您需要使用 toLowerCase()
将您的电子邮件在数据库中保存为小写,或者只需将您的架构更改为 email: { type: String, lowercase: true }
只需将您的架构更改为您提供的 email/what 名称:{ 类型:字符串,小写:true }
它绝对适用于您的情况。它对我有用。
我身边用的是mongodb和node js。我正在使用 passport local mongoose 到 register
和 login
用户。
现在我面临的问题是:注册时。如果用户使用 rajat.test@gmail.com
注册并尝试使用 rajat.Test@gmail.com
登录。然后应用程序将访问权限授予用户,这是错误的。因为在注册时,用户给出的所有字母都是小写的。
所以我只想确认一下,如何在护照本地猫鼬中进行身份验证时启用区分大小写?
下面是我的注册码和登录码
注册
const user = new User(req.body);
try {
await User.register(user, req.body.password);
res.status(302).json({message: MESSAGE.USER_REGISTRATION_SUCCESS});
} catch(err) {
handleErrors(res, err);
}
登录
const authRes = await User.authenticate()(req.body.email, req.body.password);
if (authRes && authRes.user) {
const token = jwt.sign(authRes, config.SECRET);
if (!authRes.user)
res.status(400).json(authRes);
else{
res.status(302).json({user: authRes.user, token: `JWT ${token}`});
}
} else {
res.status(401).json({error: MESSAGE.INVALID_LOGIN_ERROR});
}
使用MongoDB
在登录功能中查找用户文档时不区分大小写regular expression match。
db.users.find( { email: { $regex: new RegExp(req.body.email, 'i') } } )
使用Javascript
将您的电子邮件字符串转换为小写,然后在登录功能上找到您的用户文档。
db.users.find( { email: req.body.email.toLowerCase() } )
注意:在这种方法中,您需要使用 toLowerCase()
将您的电子邮件在数据库中保存为小写,或者只需将您的架构更改为 email: { type: String, lowercase: true }
只需将您的架构更改为您提供的 email/what 名称:{ 类型:字符串,小写:true }
它绝对适用于您的情况。它对我有用。