, чтобы достичь этого, вам нужно изменить присвоение имен коллекций со module.context.collectionName('nameOfCollection')
на 'nameOfCollection'
во всех файлах, потому что module.context.collectionName
префиксирует строку с именем службы
, поэтому
setup.js
const sessions = 'sessions';
const users = 'users';
index.js
const users = db._collection('users');
const sessions = sessionsMiddleware({
storage: 'sessions',
transport: 'cookie'
});
однако этот подход является антипаттерном для случая, когда большему количеству сервисов необходим доступ к одним и тем же базовым коллекциям (например, удаление одного сервиса может удалитьэти коллекции для других услуг).
для этого случая вы должны использовать зависимости , только ваша служба аутентификации должна иметь доступ к своим собственным коллекциям, а другие службы должны иметь службу аутентификации как зависимость и доступ к данным аутентификации через службу аутентификации.
Служба аутентификации должна иметь
в manifest.json
"provides": {
"myauth": "1.0.0"
}
в index.js или какой файл вы указываете как main
в manifest.json
module.exports = {
isAuthorized (id) {
return false; // your code for validating if user is authorized
}
};
потребляющий сервис должен иметь
в manifest.json
"dependencies": {
"myauth": {
"name": "myauth",
"version": "^1.0.0",
"description": "Auth service.",
"required": true
}
}
, а затем вы можете зарегистрировать его и назвать его
const myauth = module.context.dependencies.myauth;
if (myauth.isAuthorized()) {
// your code
} else {
res.throw(401);
}
для дальнейших действийУсловия авторизации запросов проверьте, как использовать Middleware и Session middleware
God Speed