- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经阅读了几篇文章,解释了 Passport 身份验证的流程并理解了大部分概念。但是,仍有一些模糊的地方需要解释,以便我可以一劳永逸地了解 Passport。
让我们看看这个实现 的简单示例用户注册 :
passport.js
passport.use(
'register',
new LocalStrategy(
{
usernameField: 'username',
passwordField: 'password',
passReqToCallback: true,
session: false,
},
(req, username, password, done) => {
// TODO:Why is req.body.email is used and not req.body.username
// And how are these values passed to register in the first place?
console.log(username);
console.log(req.body.email);
try {
User.findOne({
where: {
[Op.or]: [
{
username,
},
{ email: req.body.email },
],
},
}).then(user => {
if (user != null) {
console.log('username or email already taken');
return done(null, false, {
message: 'username or email already taken',
});
}
/**
* on register the user’s password is hashed and salted with the encryption package bcrypt
*
*/
bcrypt.hash(password, BCRYPT_SALT_ROUNDS).then(hashedPassword => {
User.create({
username,
password: hashedPassword,
email: req.body.email,
}).then(user => {
console.log('user created');
return done(null, user);
});
});
});
} catch (err) {
//In case of an Error interacting with our database, we need to invoke done(err)
//Calling done will make the flow jump back into passport.authenticate.
//It's passed the error, user and additional info object (if defined).
return done(err);
}
},
),
);
registerUser.js:
app.post('/registerUser', (req, res, next) => {
//Calling done will make the flow jump back into passport.authenticate.
//It's passed the error, user and additional info object (if defined).
passport.authenticate('register', (err, user, info) => {
if (err) {
console.error(err);
}
if (info !== undefined) {
console.error(info.message);
res.status(403).send(info.message);
} else {
// eslint-disable-next-line no-unused-vars
req.logIn(user, error => {
console.log(user);
const data = {
first_name: req.body.first_name,
last_name: req.body.last_name,
email: req.body.email,
username: user.username,
};
console.log(data);
User.findOne({
where: {
username: data.username,
},
}).then(user => {
console.log(user);
user
.update({
first_name: data.first_name,
last_name: data.last_name,
email: data.email,
})
.then(() => {
console.log('user created in db');
res.status(200).send({ message: 'user created' });
});
});
});
}
})(req, res, next);
});
app.post('/registerUser', (req, res, next) => {
passport.authenticate('register', (err, user, info) => {
(req, username, password, done) => {
console.log(username);
console.log(req.body.email);
console.log(username);
console.log(req.body.email);
User.create({
username,
password: hashedPassword,
email: req.body.email,
})
registerUser.js
.update({
first_name: data.first_name,
last_name: data.last_name,
email: data.email,
})
passport.js
User.create({
username,
password: hashedPassword,
email: req.body.email,
})
最佳答案
对于问题1:当您调用passport.authenticate('register')
时你应该通过 req
, res
, 然后 next 结束,这样 passport.use(localStrategy)
获取用户信息。
对于问题 2,用户名来自 req
localstrategy
内的对象
对于问题3:您不需要更新用户信息。您可以直接将资源发送给.then()
中的用户。像你一样工作:
then(() => {
console.log('user created in db');
res.status(200).send({
message: 'user created'
});
});
关于javascript - Passport.js:LocalStrategy 如何访问用户信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59953971/
我正在使用 passport.js 进行身份验证,并尝试设置本地策略。但是,每当我运行我的代码时,我都会收到一条错误消息,提示 localStrategy 不是构造函数。 代码: // config/
我正在创建一个像这样的策略对象: var strat = new LocalStrategy({ usernameField: 'email' },
我正在尝试在 Passport 上注册后重定向用户 passport.use('local-signup', new LocalStrategy({ usernameField : 'username
我尝试使用express4/passportjs设置一个简单的本地策略身份验证,但从未调用身份验证函数:这是我的代码 var passport = require('passport'); var L
我是 javascript、node 和 passportjs 的新手。对不起,如果这是不正确的。我想在我的 Passport 本地策略中使用 3 个参数:用户名、电子邮件、密码。可能吗?如果是怎么办
我在 LocalStrategy 回调中写了 console.log 但它从未调用过。我将 Sequelize 用于 ORM (MySQL)。 Passport .js const LocalStra
我已经阅读了几篇文章,解释了 Passport 身份验证的流程并理解了大部分概念。但是,仍有一些模糊的地方需要解释,以便我可以一劳永逸地了解 Passport。 让我们看看这个实现 的简单示例用户注册
我对 Web 开发比较陌生,我正在使用 NodeJs 和 Express 创建一个网站,在注册时会要求提供用户名和电子邮件。目前,它只接受用户名登录。我正在使用 Passport 和 LocalStr
我想了解 LocalStrategy 是如何工作的。 这是我的服务器文件的一部分: var passport = require('passport'); var express = require(
存有 express Passport LocalStrategy 测试,可能应模拟请求。 test('should Test password Login auth', async (done) =
我遇到一个问题,如果我尝试不使用用户名或密码登录,我的 passport.use 函数根本不会被调用。 下面是我运行 passport.authenticate 的特快专递路线。 app.post('
我的 Express.js 小应用程序中的 Passport.js 一直存在问题:无论我在 LocalStrategy 中放入什么,我总是被重定向到 failureRedirect,显然甚至没有经过
在查看许多 PassportJS 示例时,我对 BasicStrategy 的使用感到非常困惑。 有些人用它来做用户名/密码认证,其他人用它来做clientID/clientSecret认证,还有一些
我对这些策略有点困惑,不清楚它们之间的区别,以及我需要在我的应用程序中使用哪些策略? (甚至一般需要),因为我只需要将用户凭证交换为token,然后打算使用bearer strategy 最佳答案 L
我正在使用passport.js LocalStrategy 来验证用户名和密码。但现在我又多了一个字段来验证其是否处于事件状态:true/false(无论用户是否处于事件状态)。下面的代码显示了用户
我正在学习express框架,其中包括passport、passport-session。现在我收到此错误 类型错误:LocalStrategy 需要验证回调(检查下图): 告诉你,这个错误属于pas
我正在使用 Passport.js 实现本地身份验证。我已经实现了 Github Oauth,这很好,但由于某种原因,本地策略失败并出现上述错误。到目前为止,我找不到任何问题的根源。我读过其他帖子,但
我开始使用 PassportJs/ExpressJs 应用程序进行身份验证 我有两种不同的用户和管理员模型 这是passport.js代码 passport.use('admin', new Loca
当我尝试运行代码时,它给出了引用错误:LocalStrategy 未定义。 这是我第一次使用node.js,但我遇到了困难。我非常感谢您提前提供的帮助。 我将所有代码放在一个片段中,以便您可以轻松浏览
我是一名优秀的程序员,十分优秀!