2012-06-07 192 views
1

我一直在关注how to create a web API using MVC 4上的一系列视频。第六个视频描述了授权过程,但它对于我想要的都过于复杂,并且它以某种方式重定向到一个表单(这对我来说没有意义,但是我对这个东西是新手)。在asp.net中的授权mvc 4 web api

我用从其他网站的API,并且他们通常使用的两种方法之一:

  1. 在URL(HTTP令牌:// myurl/API /服务/令牌= [一堆这里字符]

  2. 的用户名或密码(或令牌)在头

我倾向于第二种方法,因为它意味着我不会有一个参数添加到每个我的方法。

如果我用这个方法,我需要将代码添加到每个方法的开始检查用户名/密码头(request.headers?)(然后发现他们在我们的数据库,看看他们是否有权限访问这个方法)...或者有一个更简单的方法来做到这一点?

+2

更多地考虑到您的标记,像网络和API是无用的。你已经使用asp解决了asp-classic。因此,您的原始标签不会让您的问题靠近任何可能帮助您的人。 – AnthonyWJones

+0

没有注意到asp-classic ...感谢您的建议 –

回答

4

您可以标记与从AthorizationFilterAttribute派生属性控制器类。 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

+0

我检查了第二个链接,其几乎完全是我在找的东西(虽然稍微比我需要的更强大)。我不想将它安装为一个包(不太熟悉C#),所以我决定复制我需要的包的各个部分,并将它们添加到我的解决方案中(不是很优雅)......遇到了一个主要问题... [Common library was removed](http://aspnetwebstack.codeplex.com/SourceControl/network/forks/marcind/marcind/changeset/changes/387212fd633c)...因此错误无法访问?我用什么来代替? –

+0

要清楚,我收到错误“'System.Web.Http.Error'由于其保护级别而无法访问”...所以,它现在在System.Web.Http(不是Common)中,但它是内部...我应该使用什么呢? –

+0

难道你不想修改就直接从包和引用中复制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 –