Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core 身份验证中间件-指示失败_Asp.net Core_Asp.net Core Mvc_Middleware - Fatal编程技术网

Asp.net core 身份验证中间件-指示失败

Asp.net core 身份验证中间件-指示失败,asp.net-core,asp.net-core-mvc,middleware,Asp.net Core,Asp.net Core Mvc,Middleware,我正在尝试使用asp.net内核为我的web api编写一些身份验证中间件,但我不确定如何指示身份验证失败 我的想法是允许多种身份验证方法,例如;基本使用授权头,在请求主体中传递凭证,可能使用承载令牌等 我不确定的是如何从中间件内部指示成功或失败。我编写它的唯一一个中间件就是做一些事情,比如记录日志,让请求以一种愉快的方式进行 如果身份验证失败,我如何表示? 我想返回一个HTTP状态码,但我不确定请求管道的其余部分会发生什么情况,它是否会在该点之前中止并通过先前的中间件返回 由于这是身份验证,我

我正在尝试使用asp.net内核为我的web api编写一些身份验证中间件,但我不确定如何指示身份验证失败

我的想法是允许多种身份验证方法,例如;基本使用授权头,在请求主体中传递凭证,可能使用承载令牌等

我不确定的是如何从中间件内部指示成功或失败。我编写它的唯一一个中间件就是做一些事情,比如记录日志,让请求以一种愉快的方式进行

如果身份验证失败,我如何表示? 我想返回一个HTTP状态码,但我不确定请求管道的其余部分会发生什么情况,它是否会在该点之前中止并通过先前的中间件返回

由于这是身份验证,我认为它应该是管道中的第一个中间件之一

如果我打算支持多种身份验证方法,那么最好将其全部放在同一个中间件中,还是可以或更好地为每个中间件设置一个身份验证机制。 如果这是可能的,我如何以这样一种方式来编写,以区分提供的凭据是坏的、在这里失败的和该中间件没有找到它支持的任何适当的凭据的,但可能下一个会

我喜欢一件中间件做一件事的想法,但我不喜欢中间件需要知道它是链中的最后一件,因为它依赖于开发人员将其按正确的顺序放置,很容易忘记并在以后移动它


谢谢。

有一个完整的Asp.Net核心身份验证/授权框架值得一读

首先要考虑的是认证与授权分离。身份验证中间件查看请求并尝试生成一个ClaimsIdentity。如果他们失败了,他们不需要终止请求,他们可以让它匿名继续。这允许您链接多种身份验证

通过身份验证中间件后,就可以对结果进行授权。您可以将其作为一个整体中间件来完成,也可以按照MVC控制器或操作进行更细粒度的操作

不过,一般来说,中间件顺序对于功能良好的应用程序通常很重要