Ответ 1
Lol это удивительная проблема
Способ auth в MVC заключается в том, что, когда вы не вошли в систему и не пытаетесь получить доступ к защищенной странице, это исключает 401 исключение. MVC затем перехватывает это исключение и перенаправляет пользователя на страницу входа (это 302, которую вы видите)
Я предполагаю, что вы можете сделать несколько действий, чтобы исправить это:
- Игнорируйте его, вероятно, поведение, которое вы хотите в любом случае
- Отключить перенаправление страницы входа (у phil haack есть хорошая статья об этом здесь: http://haacked.com/archive/2011/10/04/prevent-forms-authentication-login-page-redirect-when-you-donrsquot-want.aspx)
ИЗМЕНИТЬ
В соответствии с вашими комментариями следующий код превратит все переадресации в 401s по запросу через ajax. Это один из способов избежать перечисленных проблем.
public class MvcApplication : HttpApplication {
protected void Application_EndRequest() {
var context = new HttpContextWrapper(Context);
// If we're an ajax request, and doing a 302, then we actually need to do a 401
if (Context.Response.StatusCode == 302 && context.Request.IsAjaxRequest()) {
Context.Response.Clear();
Context.Response.StatusCode = 401;
}
}
}