我正在使用带有实体框架核心的ABP框架开发一个Angular 应用程序.用户注销后,我们try 刷新令牌,但遇到500内部服务器错误.此问题同时出现在开发人员工具的控制台和网络选项卡中.以下是我们收到的错误消息:

  • 控制台:刷新令牌HttpErrorResponse{Headers: HttpHeaders,状态:500,statusText:‘OK’,url: ‘https://localhost:44351/connect/token’,OK:FALSE,...}
  • 网络:A 向https://localhost:44351/connect/token发出的XHR请求失败,并显示 500状态代码.

我们怀疑这可能与超时配置有关,但我们不确定在哪里查看或如何正确配置.

我们已经try 过的:

判断了服务器日志(log),但信息不是决定性的. 已验证数据库是否可访问并且没有明显的连接问题.

问题:

  1. 在ABP框架应用程序中刷新令牌时出现500错误的常见原因是什么?
  2. 在总部基地框架或Angular 中的什么位置 配置我是否可以设置或判断令牌刷新的超时 电话?
  3. 是否有任何处理令牌刷新的最佳做法 与总部基地框架的Angular ,这是我应该知道的?

任何 如有真知灼见或建议,我们将不胜感激.附件如下 是控制台和网络选项卡中错误的屏幕截图.

截图:

enter image description here

enter image description here

提前感谢您的帮助!

推荐答案

解决方案:延长ABP框架和ANGING OpenIddict中的令牌生命周期

已通过调整OpenIddict服务器配置中的令牌生存期解决此问题.以下是显示更改的代码片段:

PreConfigure<OpenIddictServerBuilder>(builder =>
{
    // Other configurations...

    // Increased the lifetime of authorization code and access token
    builder.SetAuthorizationCodeLifetime(TimeSpan.FromHours(6));
    builder.SetAccessTokenLifetime(TimeSpan.FromHours(6));

    // Other configurations...
});

通过将SetAuthorizationCodeLifetime和SetAccessTokenLifetime从1小时增加到6小时,应用程序现在允许用户在更长的时间内刷新令牌,而不会因令牌超时而遇到500错误.

这种调整可以在.NET Core应用程序的启动配置中完成,在那里配置OpenIddict服务器选项.

注: 根据应用程序的安全要求为令牌 Select 适当的生存期非常重要.更长的使用生命周期 对用户来说更方便,但可能会增加安全风险.

我希望这对任何可能面临类似问题的人都有帮助!

Csharp相关问答推荐

如何将字节数组转换为字符串并返回?

EF Core Fluent API中定义的多对多关系

C#自定义字典与JSON(de—)serialize

数组被内部函数租用时,如何将数组返回给ArrayPool?

属性getter和setter之间的空性不匹配?

在C#WinUI中,一个关于System的崩溃."由于未知原因导致执行不例外"

SortedSet.Remove()不会删除SortedSet.Min返回的元素

.NET SDK包中的官方C#编译器在哪里?

C#使用TextFieldParser读取.csv,但无法使用";0";替换创建的列表空条目

DateTime ToString()未以指定格式打印

如何管理Azure认证客户端响应和证书 fingerprint

Azure函数-在外部启动类中生成配置时出错

如何强制新设置在Unity中工作?

ReadOnlyMemory访问基础索引的替代方案

用于请求用户返回列表的C#Google API

如何在使用Google.Drive.apis.V3下载文件/文件夹之前压缩?

删除MudRadio时,MudRadioGroup未 Select 正确的MudRadio

如何读取TagHelper属性的文本值?

Xamarin Forms应用程序中登录页面的用户名和密码编辑文本之间不需要的空格

如何在C#中反序列化Java持续时间?