2

我有一個網站使用簡單的表單身份驗證,驗證數據庫的憑據。它工作正常。在我<system.web>的web.config內,我有:身份驗證在MVC和WebAPI網站

<authentication mode="Forms"> 
    <forms loginUrl="~/Account/Login" timeout="2880" /> 
</authentication> 

我現在需要一個小的WebAPI控制器添加到網站的應用程序拉從對象的列表。看起來,就WebApi身份驗證而言,基本身份驗證會很好。我將在應用程序中擁有用戶憑證,該憑證可以輕鬆傳遞,並在請求標頭中進行編碼。

我的問題是區分MVC和WebApi身份驗證。首先,我的解決方案是一個好主意,並且易於實施?目前,我WebApiConfig.cs我:

GlobalConfiguration.Configuration.MessageHandlers.Add(new BasicAuthenticationHandler(new AuthenticationService())); 

BasicAuthenticationHandler查找標頭中的憑據。但是,通過MVC表單身份驗證,我根本無法訪問該區域。當我在小提琴手中進行操作時,我可以看到它將我直接轉到MVC帳戶/登錄頁面。如何避免我的WebAPI調用重定向?

感謝您的任何指導。

回答

1

好吧,看起來這是一個簡單的修復。在web.config中代碼後直接行我上面看起來像:

<authentication mode="Forms"> 
    <forms loginUrl="~/Account/Login" timeout="2880" /> 
    </authentication> 
    <authorization> 
    <deny users="?" /> 
    </authorization> 

,它看起來像authorization元素被完全覆蓋所有[AllowAnonymous]我 - 這是唯一可行的方法,以達到匿名在登錄頁面。刪除這3行完全解決了我的問題 - 我現在使用我的WebAPI頁面的[AllowAnonymous]屬性,並且它正確應用基本身份驗證。