У меня есть приложение для интрасети, которое использует проверку подлинности Windows и пользовательскую таблицу пользователей в моей базе данных, которая разрешает доступ. Моя проблема заключается в том, что если пользователь не существует в моей пользовательской таблице, система запрашивает его учетные данные вместо перенаправления на мою страницу с ошибкой. Если пользователь нажимает «Отмена» или пытается 3 раза, он попадает на общую страницу 401.
Чего мне не хватает, чтобы привести их на дружественную страницу для лучшего направления?
ОБНОВЛЕНИЕ: я также добавил свою пользовательскую страницу ошибок в IIS без каких-либо изменений в результате
Мой глобальный.asax
var identity = new ClaimsIdentity(e.Identity);
IUserRepository dUser = new UserRepository(new DARDbEntities());
var userName = identity.Name.Split('\\')[1];
User user = dUser.Get(userName);
if(user == null)
{
throw new HttpResponseException(HttpStatusCode.Unauthorized);
}
Мой Web.config:
<system.web>
<compilation debug="true" targetFramework="4.7.2" />
<customErrors mode="RemoteOnly" redirectMode="ResponseRewrite" defaultRedirect="~/Error">
<error statusCode="404" redirect="~/ErrorPage/NotFound" />
<error statusCode="401" redirect="~/ErrorPage/NotAuthorized"/>
</customErrors>
и мой ErrorController:
namespace DailyAdmin.Controllers
{
[AllowAnonymous]
public class ErrorPageController : Controller
{
// GET: ErrorPage
public ActionResult Error(int statusCode, Exception exception)
{
Response.StatusCode = statusCode;
ViewBag.StatusCode = statusCode + " Error";
ViewBag.errMessage = exception.Message;
//var vm = new BaseViewModel{
// PageTitle = statusCode + " Error",
// ErrorMessage = exception.Message
//};
return View();
}
public ActionResult NotAuthorized()
{
return View();
}
}
}