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
     {
     }

你可能感兴趣的:(asp.net core 巧用 app.MapWhen 区分业务)