Я использую OpenResty, и мое приложение настроено так:
app/
clients/
photoClient.lua
init.lua
auth.lua
Допустим, у photoClient
есть конечная точка, не прошедшая проверку подлинности и прошедшая проверку подлинности (аналогично конечной точке аватара, доступной без входа в систему,но могут быть личные фотографии, которые вам нужно сначала авторизовать)
Итак, с точки зрения зависимостей, у меня есть:
-- auth.lua
local photoClient = require('app.clients.photoClient')
-- this is used to show avatar on the login page
local auth = {}
auth.isAuthenticated = function ()
-- logic to check authentication
end
return auth
и клиент
-- photoClient.lua
local auth = require('app.auth')
local photoClient = {}
photoClient.privateEndpoint = function()
if (!auth.isAuthenticated()) {
ngx.exit(403)
}
...
end
photoClient.getAvator = function() {
-- this is a public method used by auth
}
return photoClient
Это дает мне круговую проблему зависимости.Я видел на в другом посте SO , что вы можете использовать глобальные переменные, т. Е. Делать photoClient = photoClient or require('app.clients.photoClient')
, но я не хочу использовать глобальные переменные и хочу, чтобы каждый модуль оставался для себя.
Как я могу это сделать?