使用相同的登录表单登录nodejs中的Admin和User帐户?

问题描述

我正在使用Passport Js进行身份验证,并且有两种本地身份验证策略-已定义studentadmin。当前,我正在使用两条不同的路由/admin/login/student/login登录。这两条不同的路由接收来自两种不同形式的POST请求,并使用适当的本地策略进行身份验证。

我只想为管理员和学生使用一种路由/login进行登录。如何使用当前设置实现该目标?

解决方法

如果您对两种用户类型(即“用户”和“管理员”)具有相同的架构,请在该架构内添加一个新的布尔值,以表示用户是否为“管理员”。

例如: (如果您使用的是猫鼬)

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>
<% } %>