asp.net core 巧用 app.MapWhen 区分业务

最近在搞一个支付相关的api 其中需要有两套认证的逻辑. 一个是公司自己的,一个是支付中心的callback

公司自己的api比较多, callback 却只需要一个路径就可以. 所以单独套两个 asp.net core 的认证框架有点多余
而且 也不止一个支付中心,所以会有好几个认证方式.
那么就让 支付中心 跳过 asp.net core 的 authentication 就好了

解决办法(ps: 调用顺序很重要,涉及到 asp.net core 管道相关的知识)
    public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
    {
       app.MapWhen(x => x.Request.Path.StartsWithSegments("/callback"), subapp =>
        {
            subapp.UseMvc();
        });
        app.UseAuthentication();
        app.UseMvc();
    }

然后Controller 里面就要像下面这样设置

     [Route("callback/[controller]")]
     [ApiController]
     public class RecieveController : ControllerBase
     {
     }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容