我正在从零开始学习Lua,考虑创建一个像这样的插件:
用例1: 一个网站或React应用程序将请求发送到kong,头中没有UserId,没有JWT。 Kong将请求发送到预期的微服务(访客模式)。
用例2: 网站或React应用程序将请求发送给kong,标题中带有UserId。 如果没有JWT,则插件会将请求重定向到创建JWT的网页,然后重定向回Kong,Kong依次将请求发送到使用JWT的预期微服务。
用例3: 网站或React应用程序将请求发送到kong,并在标头和JWT中发送一个UserId。 Kong将请求按其方式发送给使用JWT的预期微服务。
我希望我有道理。 这可能吗?难还是容易?那里已经有解决方案了吗?如果没有,我将不胜感激一些通用的指针,以指导我应该如何做。我去过一段时间编程,但从未碰过Lua ^^。
谢谢
答案 0 :(得分:0)
在你的插件上,你将实现你的访问逻辑, 在配置上定义标题名称以检索您的值和 url
检查值是否为零
function plugin:access(config)
plugin.super.access(self)
val = kong.request.get_header(config.headerId)
jwt = kong.request.get_header(config.headerJwt)
if val == nil and jwt == nil then -- no ID no JWT guest mode
return
end
if jwt == nil then --case 2 redirect
kong.response.set_header("Location", config.url)
return kong.response.exit(302, config.url)
end