2012-06-07 190 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 –