【发布时间】:2017-07-14 18:08:32
【问题描述】:
我正在尝试为我的 web api(使用 asp.net 核心)编写一些身份验证中间件,但我不确定如何指示身份验证失败。
这个想法是我希望允许多种身份验证方法,例如;基本(使用授权标头),在请求正文中传递凭据,可能获取不记名令牌等。
我不确定的是如何从中间件中指示成功或失败。我编写它的唯一中间件是“做一件事”(例如日志记录)并让请求继续它的快乐方式。
如果身份验证失败,我该如何表示? 我想返回一个 HTTP 状态代码,但我不确定请求管道的其余部分会发生什么,它是否会原地中止并在该点之前返回之前的中间件?
由于这是身份验证,我想它需要成为管道中的第一个中间件。
如果我打算支持多种身份验证方法,最好将它们全部放在同一个中间件中,或者是否有可能(或更好)使其每个中间件有 1 个身份验证机制。 如果可能的话,我该如何编写以区分“提供的凭据不好,在此处失败”和“此中间件没有找到它支持的任何合适的凭据,但也许下一个会” .
我喜欢 1 块中间件做 1 件事的想法,但我不喜欢中间件需要知道它是链中的最后一个,因为它依赖于开发人员将其按正确的顺序排列(简单忘记并稍后移动它)。
谢谢。
【问题讨论】:
标签: asp.net-core asp.net-core-mvc middleware