要改變這一切「拒絕訪問」的消息爲您的整個ASP.NET網站,你可以爲所有未獲授權狀態的HttpModule從您的網站返回。在HttpModule中,您可以處理EndRequest事件,並且您可以檢查response.StatusCode(如果它是401),則可以將消息更改爲任何所需內容。像這樣:
public class AuthorizeMsgModule : IHttpModule
{
public void Init(HttpApplication context)
{
context.EndRequest += OnApplicationEndRequest;
}
// If the request was unauthorized, modify the response sent to the user
private static void OnApplicationEndRequest(object sender, EventArgs e)
{
var response = HttpContext.Current.Response;
if (response.StatusCode == 401)
{
response.ClearContent();
response.Write("{\"message\": \"... insert error message here ...\",\"details\": null}");
}
}
public void Dispose()
{
}
}
註冊你的模塊在你的web.config例如:
<modules runAllManagedModulesForAllRequests="true">
<add name="AuthorizeMsgModule" type="mynamespace.AuthorizeMsgModule, myassembly" />
</modules>
這會給你你寫的任何時間的內容,您返回401個狀態。正如你可以在這裏看到的小提琴手。
謝謝你的建議,但它是如何在API行爲不進行認證? – iRubens
您可以定義您自己的邏輯以驗證此方法中的Web API請求 - IsAuthenticated(),這必須針對您的應用程序的要求。我沒有發佈與我的應用程序相關的邏輯功能,可能對您沒有任何用處。你知道什麼時候API請求應該被拒絕爲未經授權以及何時應該被允許。 –