Ryt*_*hon 5 c# asp.net-core asp.net-core-middleware
我有两种自定义的ASP.NET Core中间件:一种用于身份验证(注册自己的身份验证方案),另一种用于某些业务工作。
如何在另一个中间件中使用身份验证中间件?我可以像这样在MVC中轻松使用身份验证:
services.AddMvc(config =>
{
var policy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.Build();
config.Filters.Add(new AuthorizeFilter(policy));
});
Run Code Online (Sandbox Code Playgroud)
我还可以AuthenticationSchemeProvider根据请求的URL 提供自己的身份以使用不同的身份验证方案。但是身份验证中间件仅在MVC控制器上运行。我希望它在我的自定义中间件运行之前也能运行。有可能这样做吗?
如果用户未通过身份验证,则在自定义中间件方法Invoke()调用中ChallengeAsync():
public async Task Invoke(HttpContext httpContext, IServiceProvider serviceProvider)
{
if (!httpContext.User.Identity.IsAuthenticated)
{
await httpContext.ChallengeAsync();
}
else { /* logic here */ }
}
Run Code Online (Sandbox Code Playgroud)
Microsoft.AspNetCore.Authentication.Abstractions必须添加NuGet软件包。
上面的代码将运行默认的身份验证服务以对用户进行身份验证。如果默认的是您的自定义身份验证中间件,则它将被调用。
| 归档时间: |
|
| 查看次数: |
2989 次 |
| 最近记录: |