Используя ту же форму входа для входа в учетные записи администратора и пользователя в nodejs?

#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 является сотрудником университета.