如何使 passportjs 本地用户名不区分大小写?
How to make passportjs local username be case insensitive?
现在我在我的网站上使用 passportjs(本地)进行身份验证,但用户名字段区分大小写,有没有办法改变它?我考虑过在注册时将用户名全部设为小写,但这似乎不是一个非常有效的选择,而且仍然不允许我让登录不区分大小写。
router.post("/login", middleware.isNotLoggedIn, passport.authenticate("local", {
successRedirect: "",
failureRedirect: "/login"
}), function(req, res){
res.redirect("back");
});
我自己也遇到了同样的问题。似乎护照应该对此有正式的答复。制作中间件的最简单方法。这个中间件需要在两个地方。首先在注册函数中让用户名以小写形式保存。然后在Login函数中如下图为例。祝你好运!
function usernameToLowerCase(req, res, next){
req.body.username = req.body.username.toLowerCase();
next();
}
router.post("/login", usernameToLowerCase, passport.authenticate("local", {
successRedirect: "/",
failureRedirect: "/login"
}), function (req, res) {
});
@robertklep 通过建议新的 LocalStrategy(...) 提出了正确的想法。注意 new RegExp(username, "i")
使比较不区分大小写。
passport.use(new LocalStrategy(
function(username, password, done) {
//User.getUserByUsername(username, function(err, user){
User.getUserByUsername(new RegExp("^" + username + "$", "i"), function(err, user){
if(err) throw err;
if(!user){
return done(null, false, {message: 'Unknown User'});
}
...
现在我在我的网站上使用 passportjs(本地)进行身份验证,但用户名字段区分大小写,有没有办法改变它?我考虑过在注册时将用户名全部设为小写,但这似乎不是一个非常有效的选择,而且仍然不允许我让登录不区分大小写。
router.post("/login", middleware.isNotLoggedIn, passport.authenticate("local", {
successRedirect: "",
failureRedirect: "/login"
}), function(req, res){
res.redirect("back");
});
我自己也遇到了同样的问题。似乎护照应该对此有正式的答复。制作中间件的最简单方法。这个中间件需要在两个地方。首先在注册函数中让用户名以小写形式保存。然后在Login函数中如下图为例。祝你好运!
function usernameToLowerCase(req, res, next){
req.body.username = req.body.username.toLowerCase();
next();
}
router.post("/login", usernameToLowerCase, passport.authenticate("local", {
successRedirect: "/",
failureRedirect: "/login"
}), function (req, res) {
});
@robertklep 通过建议新的 LocalStrategy(...) 提出了正确的想法。注意 new RegExp(username, "i")
使比较不区分大小写。
passport.use(new LocalStrategy(
function(username, password, done) {
//User.getUserByUsername(username, function(err, user){
User.getUserByUsername(new RegExp("^" + username + "$", "i"), function(err, user){
if(err) throw err;
if(!user){
return done(null, false, {message: 'Unknown User'});
}
...