【问题标题】:authorization in asp.net mvc 4 web apiasp.net mvc 4 web api中的授权
【发布时间】:2012-06-07 13:30:57
【问题描述】:

我一直在how to create a web API using MVC 4 上关注一系列视频。第六个视频描述了授权过程,但它对我想要的来说太复杂了,而且它以某种方式重定向到一个表单(这对我来说没有意义,但我对这个东西很陌生)。

我使用过其他网站的 API,它们通常使用以下两种方法之一:

  1. url 中的令牌(http://myurl/api/service/?token=[bunch of characters here]

  2. 标题中的用户名或密码(或令牌)

我倾向于第二种方法,因为这意味着我不必为每个方法添加参数。

如果我使用这种方法,是否需要在每个方法的开头添加代码以检查标头(request.headers?)中的用户名/密码(然后在我们的数据库中找到它们并查看它们是否具有访问权限这种方法)...或者有更简单的方法吗?

【问题讨论】:

  • 多考虑你的标签,web和api之类的东西是没用的。您使用了解析为 asp-classic 的 asp。因此,您的原始标签在任何可能帮助您的人附近都没有提出您的问题。
  • 没有注意到 asp-classic...感谢您的建议

标签: asp.net .net asp.net-mvc asp.net-mvc-4 asp.net-web-api


【解决方案1】:

您可以使用派生自 AthorizationFilterAttribute 的属性标记您的 Controller 类。 http://msdn.microsoft.com/en-us/library/system.web.http.filters.authorizationfilterattribute(v=vs.108).aspx

在这种情况下,您不需要在每种方法中都编写授权检查,而只需在一个地方。 这种方法在以下链接中有很好的描述:

http://www.tugberkugurlu.com/archive/api-key-authorization-through-query-string-in-asp-net-web-api-authorizationfilterattribute

【讨论】:

  • 我检查了第二个链接,它几乎正是我正在寻找的内容(尽管比我需要的更强大)。我不想将它作为一个包安装(对 C# 不太熟悉)所以我决定复制我需要的包部分并将它们添加到我的解决方案中(不是很优雅)......遇到了一个主要问题...Common library was removed ...因此无法访问错误?我用什么代替?
  • 要清楚,我收到错误“'System.Web.Http.Error' 由于其保护级别而无法访问”......所以,它现在在 System.Web.Http (不常见)但它是内部的......我应该使用什么来代替?
  • 您不想只是从包中复制 dll 并在不修改的情况下引用。 dll 是:System.Web.Http.dll、System.Web.Http.Common.dll、System.Web.Http.WebHost.dll、System.Json.dll、System.Net.Http.dll、System.Net。 Http.Formatting.dll、System.Net.Http.WebRequest.dll
  • 这可能暴露了我的无知,但我想确切地了解发生了什么,并且Tugberk的代码中有很多我不明白的东西......所以我自己写了一些代码。 .我能够将Tugberk's Code 的部分内容与tutorial on filters 结合起来,并在没有角色的情况下进行基本授权......只是apiKey(我现在正在努力添加角色......)
猜你喜欢
  • 1970-01-01
  • 2014-02-09
  • 1970-01-01
  • 2012-08-12
  • 1970-01-01
  • 1970-01-01
  • 2023-03-12
  • 1970-01-01
  • 2012-10-11
相关资源
最近更新 更多