Asp.Net Core使用Cookie授权和JWT授权

2024-02-06

我面临着一个在我的应用程序中似乎无法解决的问题。现在,我对应用程序的 MVC 部分使用 cookie 授权,对 Api 使用 JWT 令牌。到目前为止一切顺利,一切都按预期进行;我能够使用 cookie 授权方案授权我的 MVC 控制器,并且能够使用 JWT 授权方案授权我的 API。

但问题是:我的视图发出 Ajax 请求以从我的 Api 获取一些数据。每次发出请求时,都会出现未经授权的错误。发生这种情况是因为 Api 使用 JWT 方案。这里最好的解决方案是什么?我是否需要在本地创建 JWT 令牌,将其保存在单独的 cookie 中,然后在发送请求之前设置授权标头?就像这样:

// Attatch token to all requests
$(document).ajaxSend(function (event, xhr, options) {
    xhr.setRequestHeader('Authorization', 'Bearer ' + '@Request.Cookies["Token"].Value');
});

或者我会将 Api 控制器的授权方案设置为 JWT 和 cookie?


启动.cs:

services.AddAuthentication()
    .AddCookie()
    .AddJwtBearer(cfg =>
    {
        cfg.TokenValidationParameters = new TokenValidationParameters()
        {
            ValidIssuer = _configuration["Tokens:Issuer"],
            ValidAudience = _configuration["Tokens:Audience"],
            IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_configuration["Tokens:Key"]))
        };
    });

Edit:

根据,我应该这样做:

[Authorize(AuthenticationSchemes = CookieAuthenticationDefaults.AuthenticationScheme + "," + JwtBearerDefaults.AuthenticationScheme)]

如果我从我的视图发送 Ajax 请求,它仍然显示 401 错误。当我从 Postman 发送包含 JWT 令牌的请求时,它确实有效。

我发现,如果我仅设置 JWT 承载方案,该方案就会正确应用并按 JWT 令牌的预期工作:

[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]

但对于 Cookie 身份验证,它仅在我根本不指定任何方案时才有效,如下所示:

[Authorize]

这样做是行不通的:

[Authorize(AuthenticationSchemes = CookieAuthenticationDefaults.AuthenticationScheme)]

JwtBearer默认值


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Asp.Net Core使用Cookie授权和JWT授权 的相关文章

  • 从异步方法同步调用 CPU 密集型方法的混乱

    我正在尝试 NET 4 5 的 async await 结构 我正在开发 RESTful Web API 解决方案 我试图弄清楚如何处理 CPU 绑定操作 1 从当前线程同步调用它 或 2 使用Task Run 让我们使用这个例子page
  • 如何在 Jersey RESTful Web 服务中放置 cookie?

    我想通过 Jersey API 将 cookie 从 PUT webservice result 放置到 POST webservice 这是我的代码 WebResource service1 client resource http te
  • MVC4 - ContextDependentView - 是什么意思?

    我刚刚开始使用 MVC4 我看到的第一个操作方法有一些新内容 我查了一下互联网 找不到任何关于此的信息 public ActionResult LogOn return ContextDependentView 有谁知道 ContextDe
  • Cookie 在 ASP.net 中失去价值

    我有以下设置 cookie 的代码 string locale DropDownList this LoginUser FindControl locale SelectedValue HttpCookie cookie new HttpC
  • 更新面板异常处理

    当我在正在构建的 ASP NET Web 应用程序中实现的 UpdatePanel 中发生异常时 它们会导致页面上出现 JavaScript 错误 并在警报中提供一些高级错误输出 这对于开发来说还可以 但是一旦系统投入生产 由于多种原因 这
  • 盒式捆绑包与 MVC4 捆绑包

    我目前正在开发一个原型 ASP NET MVC 3 解决方案 该解决方案将用作多个项目重写的基础 来自 Web 表单 我的目标之一是跨应用程序实现一些脚本管理 而不是我们目前没有的目标 MVC 3有一个缺陷恕我直言 如果您需要在部分视图或模
  • 以编程方式注入依赖项asp.net core

    我刚刚开始Asp net core 依赖注入 我的概念可能不准确 这篇 docs asp net 帖子 https docs asp net en latest mvc controllers dependency injection ht
  • 发布到IIS,设置环境变量

    阅读这两个问题 答案 我能够在 IIS 8 5 服务器上运行 Asp net 5 应用程序 Asp net vNext 早期测试版发布到 Windows 服务器中的 IIS https stackoverflow com questions
  • EditorFor 的最小值和最大值

    我一直在尝试这段代码来设置我的最小值和最大值EditorFor
  • .net dropdownlist对齐文本

    我正在尝试将 net 下拉列表中的文本向右对齐 使用 CssClass 我可以在 Firefox 中将文本向右对齐 IE 不会将文本右对齐 而是左对齐 我读到 IE 6 不支持这个 这是真的 我使用的是 IE7 但我的大多数用户将使用 IE
  • App Insights 升级到 2.5 后,Azure 应用服务将无法启动

    我有一个存储库 它使用应用程序洞察来记录有关在 ASP NET 中运行的服务的信息 我们有一些 ASP NET Core 2 0 站点以及一些完整框架的 asp net 4 应用程序 随着应用程序洞察 2 5 的发布 我们在核心站点中获得了
  • ModelBinder 验证在使用反射的 getter 上中断

    我遇到了一个似乎与反射和模型绑定验证有关的问题 并且FormatterParameterBinding ExecuteBindingAsync 特别是 虽然我可以使用方法来做我想做的事情 但如果我可以使用属性 我会更喜欢它 在这里 我正在寻
  • 检查 asp.net 文本框中的脚本

    我们希望阻止用户在文本框中输入 html 或 javascript 我们可以解析输入并检查尖括号 想知道是否有更好的方法来做到这一点 我发现用编码的尖括号替换尖括号可以解决大多数问题 这里有一个参考 http ha ckers org xs
  • 简单的 LINQ 和列表错误:WhereListIterator`1[Task]' 键入 'System.Collections.Generic.List`1[Task]'

    我无法理解我的错误 Method public List
  • 我可以根据角色隐藏/显示 asp:Menu 项吗?

    我可以隐藏某些菜单项吗asp Menu基于角色的控制
  • ASP.NET 验证控件和 Javascript 确认框

    我有一个使用 NET 服务器端输入验证控件的页面 此页面还有一个 javascript 确认框 在提交表单时会触发该确认框 当前 当选择 提交 按钮时 会出现 javascript 确认框 一旦确认 就会触发 ASP NET 服务器端验证控
  • 单元测试验证失败

    我正在运行我的单元测试PostMyModel路线 然而 在PostMyModel 我用的是线Validate
  • 访问 ascx 文件中的母版页控件

    我有一个母版页文件 其中包含 2 个面板控件中的 2 个菜单 我还使用控件来检查用户是否登录并获取用户类型 根据我想要显示 隐藏面板的类型 控件本身不在母版页中引用 而是通过 CMS 系统动态引用 我想在用户控件中使用findcontrol
  • 编译器失败,错误代码-1073741819

    我们遇到以下错误 而且每次都需要重启服务器 The compiler failed with error code 1073741819 此外 ASP Net 工作正常 只有 ASP Net MVC 应用程序无法工作 任何想法 我的错误代码
  • 使用 dotnet pack 包含所有依赖项

    有什么办法可以强制dotnet pack包含所有引用的程序集 project json 中的所有依赖项 我相信这是相关的 https github com dotnet cli issues 1290 https github com do

随机推荐

  • 最好的屏幕抓取语言是什么? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • solr 中的距离分面 - 如何生成在给定距离范围内搜索的链接

    在 Solr 中生成距离范围或 桶 的分面相当简单 http wiki apache org solr SpatialSearch How to facet by distance http wiki apache org solr Spa
  • 如何在 Greasemonkey 或 Tampermonkey 中排除 iframe?

    我为一个网站创建了一个 Greasemonkey 脚本 该脚本的作用是在页面末尾添加一个 div document body insertBefore myDiv document body firstChild 但现在该网站为 googl
  • JavaScript - 比较两个具有相同字符串的数组

    我目前正在做一个项目 我需要比较这两个数组并过滤掉具有相同房间名称的数组 例如 A420 2 0h 53 m 从vacant 数组 和A420 2 from booked 大批 var vacant A210 3 0h 53 m A510
  • 值对象是一个糟糕的模式吗?

    使用 VO POCO 是一种糟糕的设计模式吗 有人说一个对象的所有领域逻辑都需要集中在该对象中 例如 ProductVO ID 名称 描述 ProductBO SearchById int id Insert ProductVO newPr
  • mysql如何进行IP地址的反向解析?

    我们重新启动了一台运行 mysql 的机器 并且遇到了一些奇怪的问题 其他机器上的大多数进程都可以毫无问题地连接 如果我们显式地通过环回地址进行连接 我们也可以在本地进行连接 这有效 mysql hlocalhost utest user
  • IO.File.GetLastAccessTime 关闭一小时

    我正在开发一个程序 用于记录文件中的日期元数据 例如创建时间 上次修改时间等 该程序的旧版本是用 VBA 编写的 并执行以下操作 Public Function GetFileLastAccessTime ByVal FilePath As
  • 防伪异常:未提供所需的防伪令牌或该令牌无效

    我有一个 MVC2 应用程序 我正在尝试实施 AntiForgeryToken 帮助程序来防止 CSRF 攻击 我正在使用 Steve Sanderson 的博客来实现这一点 http blog stevensanderson com 20
  • 使用 Python 和 OpenCV 进行中值滤波器

    我尝试制作 python 程序来进行中值过滤 我得到了这篇文章http www programming techniques com 2013 02 median filter using c and opencv image html h
  • R:区分 EMPTY 省略号和包含 NULL 的省略号?

    Imagine myfunct lt function x dots lt list 如何在函数执行过程中区分点是否源自myfunct something 无点 或myfunct something NULL 点包括明确的NULL 在我的实
  • JavaScript 函数行为

    我的 JavaScript 有问题 在我的代码中有一个单选按钮 单击它应该调用UcSelect 功能 我尝试了下面的代码 但没有成功 该函数只是尝试打印一些内容以帮助我理解代码的行为
  • 如何扩展 R 包中定义的引用类?

    我想允许用户扩展我在包中定义的引用类 这是一个玩具示例 my package R Main R My Main class export Main lt setRefClass Main 加载此包后 当我尝试扩展它时收到警告 library
  • 无法迁移到 androidX

    尝试通过 Refractor gt 迁移到 AndroidX 迁移到 androidx 我已经尝试了很多次 使缓存无效并重新启动 清理 重建 但每次完成一些处理和加载时都会出现以下错误日志 java lang IllegalArgument
  • iOS 13 在更改平移方向时不会引发 panend 事件

    我有一个使用 Hammer js 事件的自定义图像滑块 我使用以下内容来创建我的 锤子 对象 const hammerPan new Hammer domElement lock vertical scrolling when pannin
  • 如何获得 ProblemBase 列表? [复制]

    这个问题在这里已经有答案了 可能的重复 如何创建从具有不同类型的同一泛型类继承的对象列表 https stackoverflow com questions 7066506 how do i create a list of objects
  • .Net Framework 4.5 中数组的 MaxSize

    根据这个网站here http www centerspace net blog large matrices and vectors the MaxSize of an array can be more than 2GB in the
  • 如何使用 MySQL 进行分组和计数

    我的数据如下所示 ID post author post title guid 3309 21 Should somebody not yet on SQL 2008 wait for SQL 2008 R2 since it s near
  • 模块解析失败:Storybook 6.1.11、Webpack 5.11.0、React 17.0.1 出现意外字符“@”(1:0)

    尝试使用所有最新版本设置反应应用程序 Github 存储库链接 https github com sharathm89 react app 尝试运行导入 sass 文件的 Storybook 将导致以下错误 尝试在不导入样式的情况下运行 故
  • 在Python中递归地定义函数

    我有一个关于 lambda 函数的简单问题 我想做一个循环 其中每次迭代都根据前一次迭代中的 lambda 函数定义一个新的 lambda 函数 f lambda x x 2 j 0 J 2 while j
  • Asp.Net Core使用Cookie授权和JWT授权

    我面临着一个在我的应用程序中似乎无法解决的问题 现在 我对应用程序的 MVC 部分使用 cookie 授权 对 Api 使用 JWT 令牌 到目前为止一切顺利 一切都按预期进行 我能够使用 cookie 授权方案授权我的 MVC 控制器 并