如何使用 JWT + HttpOnly Cookie 正确刷新令牌?

2023-12-29

我已经使用 JWT + HttpOnly Cookies 在我的 AspNetCore API 应用程序中成功设置了身份验证,灵感来自this https://stormpath.com/blog/token-authentication-asp-net-core文件和this https://stackoverflow.com/questions/37398276/how-can-i-validate-a-jwt-passed-via-cookies topic.

现在我正在尝试集成刷新令牌功能。 我发现了this https://www.blinkingcaret.com/2018/05/30/refresh-tokens-in-asp-net-core-web-api/教程,但它仅基于 JWT 身份验证,我陷入了应该添加令牌过期响应的标头:

options.Events = new JwtBearerEvents
{
    OnAuthenticationFailed = context =>
    {
        if (context.Exception.GetType() == typeof(SecurityTokenExpiredException))
        {
            context.Response.Headers.Add("Token-Expired", "true");
        }
        return Task.CompletedTask;
    }
};

因为我使用的是基于 cookie 的身份验证,所以我使用重定向登录事件而不是身份验证失败时事件,以及上下文.Exception.GetType()我无法使用该方法。 所以我不知道如何确定是否需要刷新令牌。

我该如何解决这个问题?

UPDATE 1

这就是我实际做的:

options.Events.OnRedirectToLogin = context =>
{
   if (context.Request.Path.StartsWithSegments("/api"))
      context.Response.StatusCode = (int)HttpStatusCode.Unauthorized;
   else
      context.Response.Redirect(context.RedirectUri);

   return Task.FromResult(0);
};

这是我要添加的地方令牌过期标题,但基于什么?


使用中间件将 cookie 添加到不记名标头,如下所示:

        app.Use(async (context, next) =>
        {
            var token = context.Request.Cookies["access_token"];
            if (!string.IsNullOrEmpty(token)) context.Request.Headers.Add("Authorization", "Bearer " + token);
            await next();
        });
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 JWT + HttpOnly Cookie 正确刷新令牌? 的相关文章

  • 如何在c++中读取pcap文件来获取数据包信息?

    我想用 C 编写一个程序来读取 pcap 文件并获取数据包的信息 例如 len sourc ip flags 等 现在我找到了如下代码 我认为它会帮助我获取信息 但是我有一些疑问 首先我想知道应该将哪个库添加到我的程序中 然后什么是 pca
  • 如何将非静态类成员“std::bind”绑定到 Win32 回调函数“WNDPROC”?

    我正在尝试将非静态类成员绑定到标准WNDPROC http msdn microsoft com en us library ms633573 aspx功能 我知道我可以通过将类成员设为静态来简单地做到这一点 但是 作为一名 C 11 ST
  • 确保 StreamReader 不会挂起等待数据

    下面的代码读取从 tcp 客户端流读取的所有内容 并且在下一次迭代中它将仅位于 Read 上 我假设正在等待数据 我如何确保它不会在没有任何内容可供读取时返回 我是否必须设置低超时 并在失败时响应异常 或者有更好的办法吗 TcpClient
  • 单个对象的 Monogame XNA 变换矩阵?

    我读过一些解释 XNA Monogame 变换矩阵的教程 问题是这些矩阵应用于 SpriteBatch Begin matrix 这意味着所有 Draw 代码都将被转换 如何将变换矩阵应用于单个可绘制对象 就我而言 我想转换滚动背景 使其自
  • 为什么 Google 测试会出现段错误?

    我是 Google Test 的新手 正在尝试提供的示例 我的问题是 当我引入失败并设置GTEST BREAK ON FAILURE 1 或使用命令行选项 GTest 将出现段错误 我正在考虑这个例子 https code google c
  • 回发后刷新时提示确认表单重新提交。我做错了什么?

    我有一个以空白 默认状态启动的仪表板 我让用户能够将保存的状态加载到仪表板中 当他们单击 应用 按钮时 我运行以下代码 function CloseAndSave var radUpload find radUpload1ID var in
  • 将 Word 文档另存为图像

    我正在使用下面的代码将 Word 文档转换为图像文件 但是图片显得太大 内容不适合 有没有办法渲染图片或将图片保存到合适的尺寸 private void btnConvert Click object sender EventArgs e
  • 是否有实用的理由使用“if (0 == p)”而不是“if (!p)”?

    我倾向于使用逻辑非运算符来编写 if 语句 if p some code 我周围的一些人倾向于使用显式比较 因此代码如下所示 if FOO p some code 其中 FOO 是其中之一false FALSE 0 0 0 NULL etc
  • 在一个平台上,对于所有数据类型,所有数据指针的大小是否相同? [复制]

    这个问题在这里已经有答案了 Are char int long 甚至long long 大小相同 在给定平台上 不能保证它们的大小相同 尽管在我有使用经验的平台上它们通常是相同的 C 2011 在线草稿 http www open std
  • 具有交替类型的可变参数模板参数包

    我想知道是否可以使用参数包捕获交替参数模式 例如 template
  • C# 中的合并运算符?

    我想我记得看到过类似的东西 三元运算符 http msdn microsoft com en us library ty67wk28 28VS 80 29 aspx在 C 中 它只有两部分 如果变量值不为空 则返回变量值 如果为空 则返回默
  • 外键与独立关系 - Entity Framework 5 有改进吗?

    我读过了several http www ladislavmrnka com 2011 05 foreign key vs independent associations in ef 4 文章和问题 https stackoverflow
  • “接口”类似于 boost::bind 的语义

    我希望能够将 Java 的接口语义与 C 结合起来 起初 我用过boost signal为给定事件回调显式注册的成员函数 这非常有效 但后来我发现一些函数回调池是相关的 因此将它们抽象出来并立即注册所有实例的相关回调是有意义的 但我了解到的
  • 如何设置 log4net 每天将我的文件记录到不同的文件夹中?

    我想将每天的所有日志保存在名为 YYYYMMdd 的文件夹中 log4net 应该根据系统日期时间处理创建新文件夹 我如何设置它 我想将一天中的所有日志保存到 n 个 1MB 的文件中 我不想重写旧文件 但想真正拥有一天中的所有日志 我该如
  • 动态添加 ASP.Net 控件

    我有一个存储过程 它根据数据库中存储的记录数返回多行 现在我想有一种方法来创建 div 带有包含该行值的控件的标记 如果从数据库返回 10 行 则 10 div 必须创建标签 我有下面的代码来从数据库中获取结果 但我不知道如何从这里继续 S
  • 如何在非控制台应用程序中查看 cout 输出?

    输出到调试窗口似乎相当繁琐 我在哪里可以找到cout如果我正在编写非控制台信息 则输出 Like double i a b cout lt lt b lt lt endl I want to check out whether b is z
  • 使用 C# 读取 Soap 消息

  • 如何部署“SQL Server Express + EF”应用程序

    这是我第一次部署使用 SQL Server Express 数据库的应用程序 我首先使用实体 框架模型来联系数据库 我使用 Install Shield 创建了一个安装向导来安装应用程序 这些是我在目标计算机中安装应用程序所执行的步骤 安装
  • 如何从 ODBC 连接获取可用表的列表?

    在 Excel 中 我可以转到 数据 gt 导入外部数据 gt 导入数据 然后选择要使用的数据源 然后在提供登录信息后 它会给我一个表格列表 我想知道如何使用 C 以编程方式获取该列表 您正在查询什么类型的数据源 SQL 服务器 使用权 看
  • 从列表中选择项目以求和

    我有一个包含数值的项目列表 我需要使用这些项目求和 我需要你的帮助来构建这样的算法 下面是一个用 C 编写的示例 描述了我的问题 int sum 21 List

随机推荐

  • 子进程会发生什么?

    如果子进程的父进程未经等待就突然终止 会发生什么情况 子进程也会死吗 孩子得到重新定义为init http en wikipedia org wiki Orphan process
  • linux Wayland 显示多用户

    我使用摇摆合成器 当我在控制台中更改用户时 我无法显示 wayland 图形界面 它与 X 应用程序一起使用 su otherUser myApplicationWayland error XDG RUNTIME DIR not set i
  • Windows 上的 Apache / PHP 因正则表达式而崩溃

    我发现以下 PHP 代码在 Windows Apache 服务器上运行时会崩溃
  • Google Firebase 功能部署失败 - 我该怎么办?

    错误信息 Error There was an error deploying functions firebase debug log 包含以下内容 debug 2021 11 16T12 12 16 165Z Error Failed
  • 如何在 NestJS 中提供静态图像

    我开始学习 MEAN 堆栈 当我访问 Express 时 我发现 Express 框架中存在一个额外的层 称为 NestJS 它拥有我想要的一切 并且具有类似 Angular 的语法 因此对我来说非常完美 但每一个新步骤都是一场噩梦 文档根
  • Android SurfaceView 的低 FPS

    我在使用 SurfaceView 时遇到了一些帧速率问题 我正在做我在一些教程中找到的典型内容 所有教程都说一样 但我无法在我的三星 Galaxy S 旧款 i9000 上达到像样的帧速率 这是我的循环线程的代码 FPS 初始化为 30 O
  • RESTSharp 无法找到位置标头

    我有一个 C 异步任务返回 Task
  • 无法将外部引用与 C# 控制台应用程序一起使用

    我已经尝试了下面的所有建议 但仍然没有喜悦 我现在正在尝试控制台应用程序 让我准确解释一下我在做什么 我在 VS 2010 中创建一个新的控制台项目 我添加了许多引用 dll 其中一些不是我的 例如 Castle Winsor 和 N2 C
  • Rails 开发人员如何与 Flex 前端对话?

    我将 Rails 开发视为 Flex 应用程序的后端 并试图找出 Rails 应用程序和 Flash Player 之间的通信层 我发现的所有内容都表明使用 SOAP Web 服务进行通信 然而 Flash 支持 AMF 它很好且快速 并且
  • 在 AFNETWORKING 中返回响应

    我正在关注this http www raywenderlich com 30445 afnetworking crash course在 IOS 中学习 AfNetworking 的教程 我正在使用以下函数来获取服务器的响应 1 NSSt
  • 仅更改图表一个区域的背景颜色[重复]

    这个问题在这里已经有答案了 我想仅更改图表的一部分的背景颜色 那可能吗 例如 使用下面的图表 我可能想表明我对重量在 2 到 4 吨之间的汽车特别感兴趣 因此希望使用粉红色背景突出显示该区域 更具体地说 我想覆盖一个透明的粉红色矩形 该矩形
  • 如何在 Swift 中检索对象的类型? [复制]

    这个问题在这里已经有答案了 我似乎无法在 Swift 中找到返回对象类型的函数或方法 如何在 Swift 中检索对象的类型或类 我尝试使用 Obj C 类 但显然不起作用 在Python中你有类似的东西type or isinstance
  • 如何为每个版本提供 2 种风格和 2 种不同的密钥配置以用于调试版本?

    背景 我认为 Google 登录存在一个问题 该问题与我们对我们开发的 2 种不同风格的应用程序使用相同的密钥配置这一事实有关 原因是两者在调试和发布时似乎具有相同的 SHA1 该问题仅存在于第二个版本的发行版本中 在第一种风格的构建和调试
  • TestNG中BeforeClass和BeforeTest的区别

    从 TestNG 官方文档中我们得知 BeforeClass 带注释的方法将在调用当前类中的第一个测试方法之前运行 BeforeTest 带注释的方法将在属于该类内部的任何测试方法之前运行
  • C# 调用 C++ DLL 传递指针到指针参数

    你们能帮我解决以下问题吗 我有一个 C 函数 dll 它将由另一个 C 应用程序调用 我需要的功能之一如下 struct DataStruct unsigned char data int len DLLAPI int API ReadFi
  • pandas.DataFrame 子类的属性在 pickle 后消失

    我试图将属性添加到 pandas DataFrame 的子类中 它们在酸洗和取消酸洗后消失 import cPickle import pandas as pd class MyClass pd DataFrame def init sel
  • 使用 C# 反序列化具有一个空白键的深度嵌套 Json

    我正在尝试将下面的嵌套 Json 反序列化为自定义 c 类型 该类型也在下面进行了描述 但我不断将反序列化对象中的路径键设置为 null 下面是代码 任何有关如何正确反序列化的建议都非常感谢 Json swagger 2 0 info ve
  • Android:strings.xml的默认语言

    我将翻译我的应用程序 strings xml 文件 strings xml 文件的默认语言是什么 因为现在我需要支持意大利语 我现在编写 strings xml 的语言 和英语 我应该使用 string xml 来表示英语并创建 资源 值
  • 带有消息队列的任务处理状态

    我正在开发一个产品数据导入系统 该系统从外部源下载产品数据 将其转换为正确的模式 并存储结果 本质上是一个 ETL 系统 系统处理的核心消息类型是 ImportProductCommand 它指定要导入的产品和来源 然而 导入命令很少单独发
  • 如何使用 JWT + HttpOnly Cookie 正确刷新令牌?

    我已经使用 JWT HttpOnly Cookies 在我的 AspNetCore API 应用程序中成功设置了身份验证 灵感来自this https stormpath com blog token authentication asp