在我的MVC2應用程序中,我希望大多數請求使用Forms身份驗證,並請求某些特定的URI來使用我的自定義身份驗證。爲了做到這一點,我添加了FormsAuthentication_OnAuthenticate()
方法,並在內部檢查了URI,並且如果它是其中一個獨佔的URI,我想檢查請求標頭中的用戶名和密碼。如何在MVC中實現自定義驗證時終止請求處理?
問題是如果提供的憑據錯誤,如何終止請求。
我嘗試:
HttpContext context = args.Context;
context.Response.Write("Wrong credentials");
context.Response.StatusCode = 401;
context.Response.End();
但一旦出現這種情況的請求轉發到在web.config中指定下
<authentication mode="Forms">
<forms loginUrl="~/LogOn"/>
</authentication>
我想請求被終止的URI - 使得該響應被髮送到客戶端並且連接被關閉。我如何實現這一目標?
我不想重定向到視圖 - 這些地址是針對程序化請求的,所以我必須將一些魔術預定義的字符串提供給響應並關閉它。所以我不想攔截Forms Auth模塊。 – sharptooth
@sharptooth,如果你不想重定向到一個視圖,只需返回一個空的結果或任何客戶端的期望:'filterContext.Result = new EmptyResult();' –
好吧,但我該如何調用我的自定義驗證方式? – sharptooth