Passaport-Local-Мангуст: Как разрешить идентичные имена пользователей

#javascript #node.js #mongodb #passport.js

Вопрос:

Я использую Passport Local Mongoose для создания пользователя в своей базе данных. Моя цель-разрешить пользователям с одинаковым именем пользователя регистрироваться в моем приложении. В ходе моего исследования я обнаружил, что если я передам объект в качестве опции в своем плагине Schema.plugin с ‘usernameUnique: false’, я разрешу пользователям регистрироваться под тем же именем пользователя. Единственная проблема в том, что когда я пытаюсь зарегистрироваться, я получаю ошибку «UserExistsError» на своей консоли.

 const mongoose = require('mongoose'); const Schema = mongoose.Schema; const passportLocalMongoose = require('passport-local-mongoose');  const UserSchema = new Schema({  email: {  type: String,  required: true,  },  username: {  type: String,  required: true,  unique: false  }, });  const options = {  usernameUnique: false, }  UserSchema.plugin(passportLocalMongoose, options); const User = mongoose.model('User', UserSchema);  module.exports = User;  

Комментарии:

1. Похоже, функция поиска проверяет пользователя по имени пользователя, поэтому вам придется либо удалить эту проверку, либо проверить на основе другого набора критериев. Почему вы хотите разрешить нескольким пользователям использовать одно и то же имя пользователя? С точки зрения системного проектирования это нецелесообразно.

2. Я не понимал, что в паспорте используется поле имени пользователя для входа каждого пользователя. На мой взгляд, для входа в систему я бы использовал электронную почту и пароль для входа пользователя в приложение (я уже принял меры предосторожности, чтобы не регистрировать одни и те же электронные письма).

3. Похоже passport-local-mongoose , что требуется username одно из уникальных полей поиска, поэтому имена пользователей должны быть уникальными. Аутентификация паспорта основана вокруг username and password , в отличие от email and password . Однако существуют и другие библиотеки аутентификации js, которые позволяют email and password