问题描述
我正在使用Passport Js进行身份验证,并且有两种本地身份验证策略-已定义student
和admin
。当前,我正在使用两条不同的路由/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>
<% } %>