我有一个 ASSP.NET MVC Web 应用程序MyWebApp,它不允许匿名访问任何页面。有一个IdentityServer4配置,一旦用户尝试打开MyWebApp,他就会被重定向到 IdentityServer 登录页面。(混合流)用户不会登录并在 IdentityServer 登录页面上停留足够长的时间,因此Noncecookie 会MyWebApp过期(默认生存期为 15 分钟)。如果他继续在 IdentityServer 中登录(成功)并被重定向回MyWebApp,他会收到以下错误:
Microsoft.IdentityModel.Protocols.OpenIdConnect.OpenIdConnectProtocolInvalidNonceException IDX21323:RequireNonce 为“[PII 已隐藏]”。OpenIdConnectProtocolValidationContext.Nonce 为 null,OpenIdConnectProtocol.ValidatedIdToken.Payload.Nonce 不为 null。无法验证随机数。如果不需要检查随机数,请将 OpenIdConnectProtocolValidator.RequireNonce 设置为“false”。请注意,如果找到“随机数”,则会对其进行评估。
但由于用户已在 IdentityServer 中成功进行身份验证,因此当他尝试MyWebApp再次访问时,他会被重定向到IdentityServer并返回MyWebApp,而无需再次输入用户名/密码。然而最初的错误很烦人。当“登录”流程开始并且用户“AFK”时间足够长,以至于“Nonce”cookie 过期并且他无法完成最终验证时,有人遇到过这样的问题吗?处理这种情况的好方法是什么?
提前致谢!
我正在研究一种方法,如果我重写基类中的特定方法但忘记调用被重写的方法中的基方法,则 Visual Studio 会发出警告。例如:
class Foo
{
[SomeAttributeToMarkTheMethodToFireTheWarning]
public virtual void A() { ... }
}
class Bar : Foo
{
public override void A()
{
// base.A(); // warning if base.A() is not called
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,我找不到一种方法,并且可能无法让编译器直接发出这样的警告。有什么想法可以实现这一点,即使它是第 3 方工具或使用新 Roslyn .NET 编译器平台中的某些 API?
更新:例如,在 AndroidStudio (IntelliJ) 中,如果您onCreate()在任何活动中重写但忘记调用基本方法super.onCreate(),您会收到警告。这就是我在 VS 中需要的行为。