- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我不确定在 Asp.Net Core 2.2 中是否会发生同样的情况,但是当我升级到最新的 Asp.net Core 3 版本时会发生这种情况。所以,我的问题是我创建了一个自定义的 AuthenticationHandler
,如下所示:
public class PlatformAuthenticationHandler : AuthenticationHandler<AuthenticationSchemeOptions>
{
public PlatformAuthenticationHandler(
IOptionsMonitor<AuthenticationSchemeOptions> options,
ILoggerFactory logger,
UrlEncoder encoder,
ISystemClock clock)
: base(options, logger, encoder, clock)
{
}
protected override async Task<AuthenticateResult> HandleAuthenticateAsync()
{
var sessionTokenStr = Request.Headers[Headers.SessionToken];
var userTokenStr = Request.Headers[Headers.UserToken];
if (string.IsNullOrEmpty(sessionTokenStr) ||
Guid.TryParse(sessionTokenStr, out var sessionToken))
{
return AuthenticateResult.Fail("Session token should be present and in GUID format");
}
if (string.IsNullOrEmpty(userTokenStr) ||
Guid.TryParse(userTokenStr, out var userToken))
{
return AuthenticateResult.Fail("User token should be present and in GUID format");
}
//... and so on...
}
}
collection.AddAuthentication(PlatformScheme.HeaderScheme)
.AddScheme<AuthenticationSchemeOptions, PlatformAuthenticationHandler>(PlatformScheme.HeaderScheme, null);
collection.AddAuthorization();
public void Configure(
IApplicationBuilder app)
{
app.UseDeveloperExceptionPage();
app.UseMiddleware<ErrorHandlerMiddleware>();
app.UseCors();
//app.UseMiddleware<SessionBuilderMiddleware>();
app.UseCoreFoundation();//custom library
app.UseStaticFiles();
app.UseStatusCodePages();
app.UseAuthentication();
app.UseAuthorization();
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
app.UseSwagger();
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/PlatformApi/swagger.json", "Platform Api");
c.RoutePrefix = "";
});
}
[HttpGet(UrlPath + "claims")]
[Authorize]
public Task<IDictionary<string, object>> GetClaims(bool refresh)
{
return _authenticationProvider.GetClaimsAsync(refresh);
}
AuthenticateResult.Fail("Session token should be present and in GUID format");
,下一步它进入
GetClaims
方法。为什么会发生这种情况? - 如果我从处理程序返回失败,那不是应该阻止我之后访问该方法吗?
最佳答案
你的中间件顺序有问题
app.UseRouting();
app.UseCors();
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(endpoints => {
endpoints.MapControllers();
});
UseAuthentication()
和
UseAuthorization()
应该放在
UseRouting()
之后和
UseEndpoints()
之前,如
docs 中所述。
关于c# - 自定义 AuthenticationHandler 在 Asp.Net Core 3 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58363002/
我有一个 ASP.NET Core WebAPI (2.2),它使用两种类型的身份验证: JWTBearer APIKey(自定义) 这就是我在 Startup.cs 中配置它的方式: service
我有一个自定义 AuthenticationHandler<>依赖于应用服务的实现。有没有办法解决 AuthenticationHandler 的依赖关系?从简单的注入(inject)器?或者可能是跨
你如何对继承自 AuthenticationHandler 的自定义中间件进行单元测试? 我从它继承的自定义类用于基本身份验证。 public class BasicAuthenticatio
我正在尝试使用来自第 3 方提供商的自定义身份验证 - 并将其链接到 .net core 2.0。 我已经创建了基础...“ token 认证处理程序” public class TokenAuthe
我正在尝试为我的服务器设置自己的自定义身份验证。但是它会为每个端点调用,即使它在方法上具有 [AllowAnonymous] 属性也是如此。使用我当前的代码,我每次都可以在 HandleAuthent
正在关注 this article ,我正在尝试实现自定义 AuthenticationHandler,但我陷入了依赖注入(inject)。 我需要将 IRepository 实例注入(inject)
我已经实现了 AuthenticationHandler 的子类.它返回 AuthenticationResult.Fail("This is why you can't log in"); 我本来希
在iOS 6 中使用authenticateHandler 时,如果用户取消登录,游戏中心将不会显示登录 View 。我意识到游戏中心会在 3 次取消尝试后自动锁定应用程序,但我说的只是 2 次尝试。
我正在使用 Facebook Owin 身份验证并或多或少地遵循 Microsoft 示例。我或多或少地关注第一次用户登录,一切正常。但如果他们退出并重试,似乎之前的 .AspNet.Correlat
我在使用 FOSUserBundle 时遇到问题,因为每当我使用错误的凭据登录时,我都会收到完整的堆栈跟踪信息作为错误消息: Error! exception 'Symfony\Component\S
我正在使用自定义 AuthenticationHandler 为我的站点实现登录功能。当我提供凭据并提交表单时,AuthenticationHandler 总是重定向到 geometrix 站点并询问
我不确定在 Asp.Net Core 2.2 中是否会发生同样的情况,但是当我升级到最新的 Asp.net Core 3 版本时会发生这种情况。所以,我的问题是我创建了一个自定义的 Authentic
我有一个 ASP.NET Core 2.2 Web API,它可以使用基本身份验证。到目前为止,它运行良好,没有出现任何问题。在其中一个 Controller 中,一个操作方法用 [AllowAnon
我是一名优秀的程序员,十分优秀!