在节点js应用程序中使用passport进行身份验证时如何检查用户角色

时间:2017-12-13 04:52:04

标签: node.js mongodb angular passport.js

我有一个角度4的应用程序,后端的节点js支持它。 我使用护照进行用户身份验证。

我尝试构建的应用程序允许具有不同角色的用户登录该应用程序。

例如 - 该应用程序允许用户为“学生”或“招聘人员”类型。

我已成功设置身份验证模型,并且能够成功登录和注销该应用程序。

但是,我目前面临的一个问题是 -

如果我选择学生登录链接并传递注册为“招聘人员”的用户的凭证,则该应用程序允许用户登录为护照身份验证,目前仅验证用户名和密码。

我正在研究护照如何能够利用在登录应用程序时为所有usertypes填充的usertype。

如果用户注册为学生,但尝试以招聘人员身份登录,那么除了验证用户名和密码之外,我还需要应用程序检查用户是否具有登录模块的相应角色。

目前,注册为学生的用户可以作为招聘人员登录,并且能够导航到招聘人员仪表板,因为护照只是验证用户名和密码。

UserModel -

            {% if success %}
            <div class="alert alert-success alert-dismissable">
                    <button aria-hidden="true" data-dismiss="alert" class="close" type="button">×</button>
                 {{ success }}
            </div>
{% endif %}

护照登录 -

var mongoose = require('mongoose');
var Schema = mongoose.Schema;

var passportLocalMongoose = require('passport-local-mongoose');

var User = new Schema({
    usertype:   {
        type: String,
        required: true,
        lowercase: true,
        enum: ['admin', 'student', 'recruiter'],
        default: 'student'
    },
    email:   {
        type: String
    }
},{
    timestamps: true
});

User.plugin(passportLocalMongoose);

module.exports = mongoose.model('User', User);

0 个答案:

没有答案