【问题标题】:How to handle JWT in ASPNET Core MVC如何在 ASPNET Core MVC 中处理 JWT
【发布时间】:2021-04-18 20:24:53
【问题描述】:

我有一个 ASPNET Core API 处理身份框架,但我还有另一个使用 ASPNET MVC 的 Web 应用程序,我希望使用我已经管理身份的相同 API 来处理会话/身份。

如何在我想要使用 [Authorize] 标记或需要可以使用声明检索的角色的控制器中管理 JWT?

我试图找到与此相关的示例,但我仅使用 Views 在同一 API 上混合使用 MVC Core 获得有关 API 的内容。

我想为我的用户提供刷新令牌按钮(可能处理 AJAX?)和 X 分钟的跨度长度,例如,在他们需要刷新以获取新令牌之前

【问题讨论】:

  • 我不会添加一个允许他们刷新它的按钮;听起来不安全,无论如何这对用户来说应该是透明的。您需要发出并使用刷新令牌来获取访问令牌,并且刷新令牌通常是长期存在的。如果它过期了;您应该回退到用于获取初始令牌的授权类型。
  • 但是我如何在我的 [Authorize] 中处理这个 JWT使用我的 API
  • 您需要在 api 中添加配置,以便它可以检查令牌的有效性。然后授权将正常工作。在您的 Startup 课程中,您将拥有类似于:services.AddAuthentication(...).AddJwtBearer(...)....

标签: c# asp.net-mvc api asp.net-core asp.net-identity


【解决方案1】:

您已将身份验证放在 api 上,因此您不必考虑 MVC 中的身份。我建议api只考虑身份验证和受保护的资源,MVC只考虑与用户的交互。

在api中配置jwt,在api中使用[Authorize]保护授权资源。将经过身份验证的令牌保存在 cookie 或会话中。

关于刷新令牌,可以用ajax延长过期时间。

【讨论】:

  • 欣赏整个油漆,如果没有这些,我将无法理解,非常感谢,我将在完成后提供代码,顺便说一句,这是一个安全的好习惯吗?
  • 是的,它们相对安全,因为令牌是用密钥加密的。另外,过期时间也可以加密。
猜你喜欢
  • 2022-08-17
  • 2019-07-27
  • 2021-02-09
  • 2016-12-30
  • 1970-01-01
  • 2019-10-02
  • 2019-10-04
  • 2019-08-07
  • 1970-01-01
相关资源
最近更新 更多