V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
selian
V2EX  ›  Node.js

请教: nest.js 如何优雅做接口鉴权和转发

  •  
  •   selian · 2022-11-23 18:30:52 +08:00 · 4904 次点击
    这是一个创建于 482 天前的主题,其中的信息可能已经有所发展或是发生改变。
    背景:后台同时跑了两个服务,php 和 nest ,正在做 php 向 nest 重构的过程,前端通过接口路径区分调用哪个服务的接口,php 接口 v1 后缀,nest 接口 v2 后缀。nginx 配置:部分已经由 nest 重构过的接口流量转发到 nest 服务,未重构的接口代理到 php 服务。
    目的:最近想要把接口的鉴权逻辑统一搬到 nest 上,ps:这个鉴权是业务层面的鉴权,不是用户网关鉴权。所以目前的流程是 接口请求统一由 nginx 转发到 nest 服务,nest 服务对接口做鉴权,鉴权不通过的话,nest 直接拦截;鉴权通过的话,转发到 php 服务。

    目前尝试了两种方案:
    1 、nginx auth_request 模块,php 接口请求全部转发到 nest 提供的一个鉴权接口上,这个鉴权接口和其他部署在 nest 上的业务接口一样走全局鉴权守卫。 问题:post 类型的接口由 auth_request 做了转发会丢失请求体,但是做权限判断的时候需要拿请求体的参数来做权限校验,找了一圈解决方法,就是 lua 脚本读取请求体,然后添加到 header 中进行转发,感觉这种做法又复杂又怪。
    2 、php 接口转发到 nest ,nest 使用代理中间件 proxy 转发。问题:nest 只重构了部分接口,大部分 php 接口在 nest 里没有定义,转发到 nest 的话这些接口需要定义一遍。目前也没有找到 node 有代理中间件转发到 php-fpm

    请教大佬有没有啥好的解决方法,或者相关的文章可以看看的
    1 条回复    2022-12-01 15:54:34 +08:00
    ChevalierLxc
        1
    ChevalierLxc  
       2022-12-01 15:54:34 +08:00
    直接在 PHP 里把验权请求 nest,通过了再走下面的业务?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3521 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 10:58 · PVG 18:58 · LAX 03:58 · JFK 06:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.