我在Startup.Configure
函数
app.UseMiddleware<LogMiddleware>(_loggingLevelSwitch)
//other code
.ConfigureExceptionHandler(Logger, Configuration)
.UseIdentityServer()
.UseStaticFiles()
.UseMiddleware<ContextSetupMiddleware>()
.ConfigureMvcAndLocalization()
//other code
UseIdentityServer
在内部调用UseAuthentication
我已经设置了两个方案cookie和Bearer。
我的期望是在应该调用身份验证ContextSetupMiddleware
之后,否则就会发生这种情况。
对于cookie,我可以理解,因为身份验证将在稍后完成,一旦登录完成,它将按预期工作。
对于Bearer,我认为它应该是管道的一部分,因为我们向authenticationbuilder添加了一个方案。
更新
将defaultscheme设为“Bearer”,它开始按我的意愿工作。
然而,该网站有AccountLogin屏幕(基于cookie的Auth)和一些RestAPI(基于JWT的Auth)。
基于cookie的身份验证是否仅适用于AccountLogin屏幕。我无法添加[Authorize]
,因为它是登录scree。
答案 0 :(得分:0)
实际上是设计的。如果需要任何中间件,则默认方案将覆盖,然后使用context.AuthenticateAsync()
。
就我而言,在ContextSetupMiddleware
中只需致电context.AuthenticateAsyc()
并完成身份验证。