最近在搞一个支付相关的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
{
}