Я строю систему аутентификации с использованием Express, PassportJS и MongoDB, которая будет использовать 2 стратегии аутентификации:
- O365
- Локальная (JWT) аутентификация
Ключевая часть, с которой у меня возникают проблемы, - это управление различными типами учетных записей. Пользователи, прошедшие проверку подлинности с помощью O365, не нуждаются в пароле и не могут войти в систему с использованием локальной проверки подлинности.
My userSchema
в настоящее время выглядит следующим образом:
const userSchema = new mongoose.Schema({
username: { type: String, required: true, lowercase: true, index: true }, // Depending on the user type it can be tomd (for local auth) or tomd@example.com.au for O365
hash: { type: String, required: false },
salt: { type: String, required: false },
firstname: String,
lastname: String,
image: String,
lastLoggedIn: Date,
services: Array,
userType: String, // Local or O365
activationCode: String,
activationConfirmed: { type: Boolean, default: false },
isActive: { type: Boolean, default: true }, // Handles disabling accounts
deleted: { type: Boolean, default: false } // Handles removing users
}, {timestamps: true});