SaveLolliPoP
@SaveLolliPoP
1 / 0 = ∞

Почему ACL(nodejs) блокирует отображение контента?

Всем привет, имею свой проект на angular - frontend, nodejs(express, passport, acl) - backend.

config.js
mongoose.connect(myURLtoDB, {useCreateIndex: true, useNewUrlParser: true}, function (err, db) {
    .....
};
var conn    = mongoose.connection;
exports.freshConnect = conn;


router.js
var db = require('../config/config.js');
var node_acl = require('acl');
var acl = new node_acl( new node_acl.mongodbBackend(db.freshConnect, 'acl_') );

router.use('/crm', checkForPermissions(), crmRouter);

function checkForPermissions() {
    console.log('Я работаю')
    return acl.middleware(2, getUserId);
}

function getUserId(req) {
    if (req.user) {
        return req.session.passport.user;
    }
}


Теперь при запуске базы данных в консоле сразу же запускается checkForPermissions(), хотя я никакие запросы не делаю.

При попытке отобразить какой то контнт в angular, например по URL: crm/newlead, контент не отображается. С чем это может быть связанно? Что я делаю не так?

У меня на каждой странице /crm/* идет на сервер запрос passport.js isAuthenticated(), который возвращает true или false (Если true значит пользователь авторизирован и имеет доступ к этой странице, если false идет редирект на страницу логина), но переходя на страницу angular отправляет запрос на сервер, для того чтобы получить ответ функции isAuthenticated(), но ответа не получает, тк запроса до сервера не доходит и функция checkForPermissions() вызывается в момент запуска сервера, при последующих запросах они ничего не выводит. С чем это связанно?
  • Вопрос задан
  • 139 просмотров
Решения вопроса 1
Xuxicheta
@Xuxicheta Куратор тега Angular
инженер
попробуйте
var db = require('../config/config.js');
var node_acl = require('acl');
var acl = new node_acl( new node_acl.mongodbBackend(db.freshConnect, 'acl_') );

router.use('/crm', checkForPermissions, crmRouter);

function checkForPermissions(req, res, next) {
    console.log('Я работаю')
    const userId = getUserId(req);
    acl.middleware(2, userId)(req, res, next);
}

function getUserId(req) {
    if (req.user) {
        return req.session.passport.user;
    }
}


а почему у вас getUserId(req) такая странная? так точно должно быть?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы