#mongodb #node.js #express
#mongodb #node.js #экспресс
Вопрос:
Я новичок в node.js и хочу создать страницу регистрации и входа в систему для пользователя. также там должна быть соответствующая авторизация для пользователя.Я хочу сохранить информацию о пользователе внутри базы данных mongodb.Как я могу этого добиться. может кто-нибудь предоставить мне код для этого, чтобы я мог начать с node.js и mongodb.Пожалуйста, помогите
Ответ №1:
Вы можете найти полный пример того, что вы пытаетесь сделать в приложении Nodepad от Alex Young. Два важных файла, на которые вам следует взглянуть, — это 2:
https://github.com/alexyoung/nodepad/blob/master/models.js
https://github.com/alexyoung/nodepad/blob/master/app.js
Часть модели выглядит следующим образом:
User = new Schema({
'email': { type: String, validate: [validatePresenceOf, 'an email is required'], index: { unique: true } },
'hashed_password': String,
'salt': String
});
User.virtual('id')
.get(function() {
return this._id.toHexString();
});
User.virtual('password')
.set(function(password) {
this._password = password;
this.salt = this.makeSalt();
this.hashed_password = this.encryptPassword(password);
})
.get(function() { return this._password; });
User.method('authenticate', function(plainText) {
return this.encryptPassword(plainText) === this.hashed_password;
});
User.method('makeSalt', function() {
return Math.round((new Date().valueOf() * Math.random())) '';
});
User.method('encryptPassword', function(password) {
return crypto.createHmac('sha1', this.salt).update(password).digest('hex');
});
User.pre('save', function(next) {
if (!validatePresenceOf(this.password)) {
next(new Error('Invalid password'));
} else {
next();
}
});
Я думаю, что он также объясняет код на сайте dailyjs.
Комментарии:
1. Руководство Алекса было именно тем, что мне было нужно.
2. dailyjs.com/2010/12/06/node-tutorial-5 Вот страница для аутентификации.
Ответ №2:
Я написал шаблонный проект, чтобы сделать именно это.Он поддерживает создание учетной записи, поиск пароля по электронной почте, сеансы, локальные файлы cookie для запоминания пользователей при их возвращении и безопасное шифрование пароля с помощью bcyrpt.
В моем блоге также есть подробное объяснение архитектуры проекта.
Комментарии:
1. демо-версия хороша .. но код написан не очень дружелюбным способом :/
2. Я не согласен. Если только он не изменил ее с 13 июня 2012 года. Я думаю, что код хорошо структурирован, и я могу сразу сказать, что происходит. Стоит проверить.
3. Для меня это был отличный шаблон. Я определенно изменил ее (как и следовало), чтобы соответствовать моим потребностям. Я обсуждаю возможность интеграции этого подхода с passport. Я также переключусь на Mongoose для обработки MongoDB, просто еще не добрался туда. В любом случае, это хороший эталонный проект.
Ответ №3:
Для простого способа начать работу взгляните на ExpressJS MongooseJS MongooseAuth.
В частности, этот последний плагин предоставляет стандартный простой способ входа в систему с использованием нескольких различных методов аутентификации (пароль, Facebook, Twitter и т.д.)
Комментарии:
1. есть ли способ, которым я мог бы сохранить данные для входа в базу данных (mongodb), а позже получить данные и проверить, существует ли конкретный пользователь в базе данных, если да, то пользователю будет разрешено войти в систему и перенаправлен на другую страницу. иначе он не был бы.кто-нибудь может предоставить мне код для справки
2. @DarHamid Mongoose-auth автоматически сохраняет информацию о пользователе (полученную из пароля после регистрации facebook, Twitter и т.д.) В mongodb. Клонируйте ее и запустите пример. Смотрите Readme.md для получения дополнительной информации.
3. Стоит отметить, что 2 года спустя, к сожалению, MongooseAuth не поддерживается должным образом, и вместо этого использовать PassportJS..