【问题标题】:How to add "ApiController" with token authentication inside Asp Net Core RC1 MVC如何在 Asp Net Core RC1 MVC 中添加带有令牌身份验证的“ApiController”
【发布时间】:2016-08-06 13:47:04
【问题描述】:

我知道这个问题可能会遭到一些反对,但我在 Google 上搜索了三天,没有真正有用的结果。

我在 Visual Studio 中创建了一个默认的 ASP.NET Core 1.0 RC1 项目,具有个人用户帐户身份验证/授权。通过这种方式,一切都变得简单而简单,因为该项目是使用Microsoft.AspNet.Authentication.Cookies 搭建的,而 VS 2015 完成了所有繁重的工作。

但是,我们希望从同一个项目中公开一个 API(使用相同的数据库、用户、声明等),这些 API 将从移动设备甚至一些简单的 SPA 中使用。这样,我们需要为 API 使用 JWT 之类的东西(有很多关于如何仅使用 WebAPI 执行此操作的教程)。

我们希望使用 MVC(而不是 SPA)方式来完成主要项目,以利用视图/控制器脚手架和 Visual Studio 可以提供的一切。

有很多关于仅 MVC 或仅 WebAPI 方法的教程,但您能否指出我如何将它们混合在一起?

有没有办法只在 MVC 和 WebAPI 系统范围内使用 JWT?

提前谢谢你。

【问题讨论】:

  • 仅供参考:MVC 和 WebAPI 已在 MVC 6 中合并。Controller 用作“MVC”和“API”控制器的基类,例如没有ApiController了。
  • 嗨@HenkMollema 我知道...因此我将“ApiController”放在引号之间。我知道控制器是相同的。无论如何,谢谢你的评论。
  • 嗨@Cezar。你有没有想过这个?我有完全相同的场景和问题。谢谢

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


【解决方案1】:

Limiting identity by scheme此链接可能是您问题的答案。

在某些情况下,例如单页应用程序,可以 最终有多种身份验证方法,cookie身份验证 javascript请求的登录和承载认证。

我认为,您可以使用以下代码进行 mvc 和 javascript 调用(当然,您必须启用 cookie 和承载中间件):

[Authorize(AuthenticationSchemes = "Cookie,Bearer")]
public class YourController : Controller

【讨论】:

  • 感谢您的回答!我担心这在 ASP.NET Core 1 中不起作用,因为只有一个 ActiveAuthenticationSchemes 属性,并且它不在构造函数中。现在,它接受的唯一参数是包含策略名称的字符串:public AuthorizeAttribute(string policy);。您能否指出我应该如何创建“仅限 WebAPI”政策?
  • 我无法测试代码,但可能是一个解决方案:options.AddPolicy("PolicyName", policy => { policy.Requirements.Add(new Infrastructure.MinimumAgeRequirement(21)); policy.AddAuthenticationSchemes("Bearer"); });
猜你喜欢
  • 2016-05-04
  • 2019-02-22
  • 1970-01-01
  • 2020-02-05
  • 2021-01-13
  • 2020-03-09
  • 1970-01-01
  • 1970-01-01
  • 2018-08-03
相关资源
最近更新 更多