Lee*_*Lee 5 c# middleware asp.net-core asp.net-core-identity
我已经编写了一个我只想在经过身份验证的端点上运行的中间件。
所以基本上我希望它在我的实现中只在控制器或动作标记为[Authorize]. 任何不需要授权的控制器操作都不需要我的中间件来触发。
我发现了 UseWhen 功能,但我管理的最好的是中间件仅在用户通过身份验证后触发。但是,如果用户登录后仍会在所有端点上触发。
这是我目前的条件。
app.UseWhen(context => context.User.Identity.IsAuthenticated, appBuilder =>
{
appBuilder.UseAutomaticallyRefreshTokenMiddleware();
});
Run Code Online (Sandbox Code Playgroud)
我想我只需要更改上下文检查,但不确定用什么替换它。
中间件根据条件注册到管道,注册仅在启动时完成。注册后不会修改。一旦它们成为管道的一部分,它们就是管道的一部分。您可以做的一件事是自定义 Authorize 属性。继承 Authorize 属性,然后在其中运行您在中间件中运行的逻辑。