Определение способа авторизации с NodeJS / Mongoose - PullRequest
0 голосов
/ 28 ноября 2018

Я работаю над приложением NodeJS / express, используя PassportJS для входа / регистрации.Я определил модель пользователя для всех пользователей, но хочу, чтобы только некоторые пользователи в моей администрации имели доступ к редактированию определенных моделей.Я думал о добавлении логического поля, такого как isAdmin, чтобы определить это, но я не знаю, как я могу проверить пользователей с правами администратора.Если быть точным, как бы я определил, когда мне нужно сгенерировать токен для администратора?Как я могу отличить пользователей в моих администрациях от обычных пользователей?Я думал о том, чтобы иметь отдельный локально размещенный веб-сайт, который подключается к той же базе данных, которую я мог бы использовать для управления моделями только со своего компьютера.Будет ли это работать?

Любая помощь будет принята с благодарностью!

Спасибо!

1 Ответ

0 голосов
/ 28 ноября 2018

Есть много вариантов.Я могу объяснить вам некоторые из них.

1) Как вы сказали, вы можете определить логическое поле как Admin true для false.

-> если вы используете эту опцию и используете паспорт,Вы должны получить пользователя в своем объекте запроса. Прежде чем нажимать api или конкретную конечную точку, вы можете установить промежуточное ПО для проверки того, что запрашиваемый пользователь является администратором или пользователем.file

Имя файла: ../services/auth.service.js

            exports.isAdmin = async (req, res, next) => {
                        // req.user is object that you will get after successfull login. change accordingly
                        // Or you can check from db also. Get object logged in user from db by their email id.
                        // And check condition
                        // Check Role if admin or not
                        if(req.user.isAdmin) {
                            next(); // If verify it will redirect to next process
                        } else {
                            return res.status(401).json({
                                Error: true,
                                message: 'You are not authorized to perform this action.',
                            })              
                        }

            };

Вы можете использовать эту функцию в качестве промежуточного программного обеспечения.

            const auth = require('../services/auth.service.js')

            router.get('/*', auth.isAdmin, (req, res) => {
                res.status(200).json({ message: "Hello from Admin side."})
            });

Посетите: https://github.com/mihir-kanzariya/Nodejs-CRUD

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...