为什么在 Owin Startup class 中 auth 中间件声明的顺序很重要?

Why does the order of auth middleware declaration matter in Owin Startup class?

我阅读了一些关于在使用 Web api 时在 owin 管道中设置身份验证的示例 (1,2,3,4),这些示例声明了 身份验证中间件作为配置方法中的第一个中间件,但没有说明为什么它需要第一个。

问题中,作者在身份验证中间件之前附加了 webapi 中间件,然后身份验证无法正常工作。 当作者将它移到方法的顶部时,一切都按预期工作..

有谁知道为什么要在Startup Configuration方法中将认证中间件添加为第一个中间件?

OWIN 作为责任链工作。第一个中间件将首先被触发,第二个紧接着被触发,依此类推。

在开头使用身份验证中间件可以让您获得管道其余部分的用户信息。

如果将其添加到管道的中间或末尾,则在调用此中间件之前无法访问用户信息。