#node.js #express #authentication #passport.js
#node.js #экспресс #аутентификация #passport.js
Вопрос:
Я использую Passport Js для аутентификации и имею две стратегии локальной аутентификации — student
и admin
определенные. В настоящее время я использую два разных маршрута /admin/login
и /student/login
для входа. Эти два разных маршрута получают запросы POST от двух разных форм и используют соответствующие локальные стратегии для аутентификации.
Я хотел бы использовать только один маршрут /login
для входа как администраторов, так и студентов. Как я могу добиться этого с моей текущей настройкой?
Комментарии:
1. Отличаются ли администратор и студент только правами пользователя?
Ответ №1:
Если у вас одинаковая схема для обоих типов пользователей, то есть пользователя и администратора, добавьте новое логическое значение внутри схемы, которое указывает, является ли пользователь администратором или нет.
Например: (Если вы используете Mongoose)
var UserSchema = new mongoose.Schema({
username: String,
password: String,
isAdmin: {type:Boolean, default:false},
});
Вы также должны добавить соответствующее поле в виде выпадающего меню или переключателя при регистрации нового пользователя.
Теперь вы можете использовать один и тот же маршрут POST для входа в систему обоих типов пользователей, а свойство isAdmin вошедшего пользователя можно использовать для их дифференциации, а также для изменения того, что отображается для разных пользователей.
Например, если вы используете «ejs» в качестве механизма просмотра, то
<% if(currentUser.isAdmin) { %>
<p> You can see this! </p>
<% } %>
Комментарии:
1.
student
иadmin
схемы отличаются не только этим.student
является студентом университета, в то время какadmin
является сотрудником университета.