簡體   English   中英

現有MVC應用程序中帶有Web API的AuthoriseAttribute

[英]AuthoriseAttribute with Web API in existing MVC Application

我有一個現有的MVC應用,其自定義授權屬性覆蓋System.Web.Mvc.AuthorizeAttribute

現在,我需要將Web API添加到項目中,但只允許訪問授權用戶。 如果我將自定義授權屬性添加到API控制器,它似乎會被忽略,並允許任何人不受限制地訪問。

經過一番閱讀后 ,我發現要授權用戶使用Web API,必須使用authorize屬性的System.Web.Http.AuthorizeAttribute版本。

但是,在將Authorize屬性的Http版本添加到我的API控制器,並將authorize屬性的Mvc版本保留到我的Mvc控制器之后,我對API的請求現在總是返回401-未經授權,即使登錄也是如此。

然后,我嘗試刪除我的自定義[Mvc] authorize屬性,而改用標准版本,並遇到相同的問題。

此問題描述了一個類似的問題,並嘗試通過合並兩個命名空間中的類來解決此問題 對於我來說,這聽起來不是一個很好的解決方案,因為我真的不需要自定義API授權屬性。

我在這里做錯了什么?

如果MVC應用程序與Web API在同一項目中,則只能與MVC基本身份驗證共享授權。 如果不是,則必須在Web API中創建CustomAuthorize Attribute(繼承http.AuthorizeAttribute)並在WebAPI上實現基本身份驗證。 這樣,對WebAPI的每個請求都應傳遞userName並傳遞HTTP請求的AuthHeader

我認為問題是我試圖在服務器端代碼中調用API。 (不要問,我知道這聽起來不合邏輯)。

顯然,服務器端請求不會模擬用戶憑據。 我嘗試在web.config中設置<Identity Impersonate="true"/> ,但這無效。

為了解決這個問題,我將請求移到了對文檔准備就緒的JQuery ajax調用上,我應該首先完成它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM