2016-08-15 49 views
19

我剛剛在Visual Studio 2015中創建了新的Web API項目(使用MVC),並且爲了測試目的,我運行了該項目,但最終出現錯誤。對此請求的授權已被拒絕 - 新的Web API項目

運行該項目後,它會正確顯示主頁,但是當我導航到/ api/values或/ api/values/5時,它會給我下面的xml消息。

<Error> 
    <Message>Authorization has been denied for this request.</Message> 
</Error> 

有人可以幫忙嗎?我是Web API的新手。 請注意,我不想刪除授權屬性。我只想在授權後訪問資源。所以我在尋找什麼是錯的。

+7

在值控制器中設置[AllowAnonymous]。 –

+0

@ atp9這是正確的。 – Arnstein

+0

爲什麼啓用匿名當OP說啓用了需要驗證? – StingyJack

回答

45

在ValuesController中有一個屬性Authorize如果您刪除它,那麼它將作爲主頁。

Authorize屬性只是防止匿名用戶訪問ValuesController

要使用此屬性,您需要先註冊一個用戶,然後登錄以獲取用戶的令牌,然後您可以使用該令牌授權您的自我並獲得訪問權限。

Individual-accounts-in-web-api此頁解釋所有你需要什麼

+2

感謝信息。這就是我一直在尋找的。 – atp9

+0

謝謝真的很好的內容 –

12

這是因爲你有你的ValuesController

[Authorize] 
public class ValuesController : ApiController 

Authorize屬性只是刪除[Authorize],然後再試一次

編輯

根據您的編輯:你應該創建一個新用戶並登錄或使用[AllowAnonymous],如@Marcus H.提到的。瞭解關於Identity的更多信息

+0

我不想讓api未經授權。我希望它能夠驗證傳入的請求。 – atp9

+0

好的,沒問題,然後創建一個新的用戶和登錄。 – Marusyk

+0

不,問題是爲什麼它不允許我訪問資源。如果我不是有效的用戶,該如何解決? – atp9

0

我得到了答案在這裏。

https://stackoverflow.com/a/29405794/8107314

而且這是修復我的錯誤我的錯誤

我只是碰到了同樣的問題來了,找到了解決方法非常有用:

您需要註冊OAuth令牌生成器和OAuth令牌WebAPI註冊之前的消費者事物。

如果您認爲這是一個管道,那麼認證/授權應該在控制器處理任何請求之前出現,這種方式纔有意義。

TL; DR:更改

appBuilder.UseWebApi(config); 

this.ConfigureOAuthTokenGenerator(appBuilder); 
this.ConfigureOAuthConsumer(appBuilder); 

this.ConfigureOAuthTokenGenerator(appBuilder); 
this.ConfigureOAuthConsumer(appBuilder); 

appBuilder.UseWebApi(config); 

通過 cguedel頂部43%的整體 高級軟件工程師

軟件開發者感興趣的一切。NET,尤其是WPF SOreadytohelp

相關問題