2015-04-06 3 views
0

Мой токен доступен в req.headers.authorization. Я хочу сохранить это как глобальную переменную, так что в другом файле, скажем, model, я также могу получить к нему доступ, явно не передавая его моей модели.Доступ к токену вне контроллера в NodeJS/ExpressJS

Возможно ли это?

+0

я предполагаю передать маркер в код настойчивости, так что вы можете вручную сделать второй вызов базы данных для аудита наряду с основным, – Plato

ответ

1

Поскольку узловые/экспресс-приложения остаются в памяти в качестве запущенного процесса (при условии, что вы используете его как сервер), я буду обеспокоен тем, что назначение значения запроса глобальному может привести к серьезным проблемам безопасности, если вы сохраняете авторизацию Информация.

var globalAuth; 

(function() { 
    [].slice.apply(arguments).forEach(function(reqAuth) { 
    globalAuth = reqAuth; 
    // Simulate async operation 
    setTimeout(function() { 
     console.log(reqAuth, globalAuth); 
    }, reqAuth); 
    }); 
})(100, 10, 50); 

// outputs 
// 10 50 
// 50 50 
// 100 50 
+0

Тогда что мне делать? Мне нужно получить доступ к зарегистрированному идентификатору пользователя в модели как часть сценария аудита, который должен произойти автоматически. Я не хочу вручную передавать переменную. Что делать, если я использую 'app.set ('user', user)'? – Kousha

+0

Это то, к чему [промежуточное программное обеспечение] (http://expressjs.com/guide/using-middleware.html). Вы уже пробовали этот подход? ['app.set'] (http://expressjs.com/api.html#app.set) по существу устанавливает глобальное приложение, поэтому вы попадете в ту же проблему, что и выше. –

+0

Да, я понимаю использование промежуточного программного обеспечения, но это явно требует, чтобы я включил его. У меня есть таблица аудита, и я установил триггеры на своих моделях, так что после изменений (например, 'insert',' update' или 'delete') копия сохраняется в таблице аудита (это служит для разных цель, что SQL-аудит). Эти изменения в таблицах могут возникать в любой точке любого маршрута, и тогда с помощью промежуточного программного обеспечения мне потребуется сделать это вручную. – Kousha