我在啓用了MVC4 Forms身份驗證的網站中運行web-api webservice。 Forms身份驗證應用程序使用web-api webservices。 我使用[Authorize]屬性保護了web-api。 現在,當我從MVC4應用程序調用Web-API時,授權憑證已過期我收到一個醜陋的瀏覽器類型的登錄對話框(它不適用於表單身份驗證)。 我沒有得到這在我的開發機器(IIS7.5),我不明白! 如何防止此對話框出現?我只需要接收401防止401上的瀏覽器驗證對話框
回答
移動網站的IIS8服務器和現在的問題已經...
約翰·加洛韋在他的截屏在ASP.NET Web API - Authorization很好地解釋這種(一個高度推薦的手錶)
對於一些API控制器像一個下面,你已經使用了Authorize
屬性上它。
[Authorize]
public class CommentsController : ApiController
{
...
}
他說,如果一個客戶端,使未經授權的請求,AuthorizationFilter確實是有道理的一個HTTP API的唯一的東西 - 它返回一個HTTP狀態代碼401,需要授權。再一次,我們回到了將HTTP用於API的價值 - 我們不需要安排任何事情,任何平臺上的任何客戶端都會知道HTTP 401響應的含義。
由客戶決定當他們得到401時應該怎麼做。在這個基於JavaScript /瀏覽器的示例中,我們將重定向到客戶端上的登錄頁面。
$(function() {
$("#getCommentsFormsAuth").click(function() {
viewModel.comments([]);
$.ajax({ url: "/api/comments",
accepts: "application/json",
cache: false,
statusCode: {
200: function(data) {
viewModel.comments(data);
},
401: function(jqXHR, textStatus, errorThrown) {
self.location = '/Account/Login/';
}
}
});
});
});
這裏在這個例子中,如果遇到401,那麼你可以決定要做什麼。
希望這會有所幫助。
這已經是我正在做的,但它仍然給我的瀏覽器彈出。這裏是我的代碼: http://pastebin.com/BufLzdHD –
你可以改變'self.location ='/ Account/Login /'',而是在這裏插入你想要的行爲 – Yasser
- 1. Weblogic REST API - 防止瀏覽器的基本身份驗證對話框401
- 2. 如何防止瀏覽器驗證對話框angularjs
- 3. 如何禁止瀏覽器的驗證對話框?
- 4. 防止網頁對話框產生新的瀏覽器窗口?
- 5. 關閉對話框時,如何防止jQuery驗證從驗證
- 6. 如何防止瀏覽器對話框阻止用戶界面定時器
- 7. Flash UrlLoader - 防止或禁止身份驗證對話框
- 8. .htaccess從一個php腳本的身份驗證,以防止瀏覽器對話框
- 9. 如何防止默認的瀏覽器輸入驗證?
- 10. 如何防止出現瀏覽器HTTP身份驗證對話框w/Devise和jQuery Mobile
- 11. Android瀏覽器 - 防止對背景
- 12. 防止文本框發射驗證器
- 13. 在瀏覽器中的ServiceStack 401身份驗證提示
- 14. 如何驗證的Gmail像谷歌對話在瀏覽器
- 15. Silverlight模式對話框干擾瀏覽器的onbeforeunload對話框
- 16. facebook阻止驗證對話框
- 17. 如何禁止瀏覽器c的對話框#
- 18. 硒Python的身份驗證瀏覽器登錄在HTTPS網站pupup對話框
- 19. 抑制瀏覽器的認證對話框
- 20. 獲取的瀏覽器認證對話框
- 21. 強制顯示瀏覽器的HTTP認證對話框
- 22. 防止AJAX隊列阻止瀏覽器
- 23. 打開對話框選擇瀏覽器
- 24. 造型瀏覽器對話框
- 25. 瀏覽器下載對話框
- 26. 文件瀏覽器對話框實現
- 27. 通用對話框瀏覽器
- 28. 提示瀏覽器下載對話框
- 29. jQuery UI對話框和IE瀏覽器
- 30. MSAL瀏覽器對話框關閉
的可能重複[並排基本和表單的身份驗證的ASP.NET Web API(.NET 4)](HTTP:/ /stackoverflow.com/questions/13004091/side-by-side-basic-and-forms-authentication-with-asp-net-web-api-net-4) – tugberk
看着那個帖子和其他許多人,但沒有找到任何解決方案或解釋爲什麼它在我的開發機器上,而不是在IIS6服務器上。 –
您是否使用了正確版本的AuthorizeAttribute?您應該使用Web API的System.Web.Http.AuthorizeAttribute,而不是System.Web.Mvc.AuthorizeAttribute。他們有非常不同的行爲。 –