Как остановить вход в Windows, когда пользователя нет в моей пользовательской таблице MVC 5

У меня есть приложение для интрасети, которое использует проверку подлинности 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();
        }
    }
}

person SelfTaughtCodingIdiot    schedule 21.02.2020    source источник
comment
После того, как пользователь щелкнет или попытается три раза... просто перенаправьте его на нужную страницу.   -  person Chris Catignani    schedule 22.02.2020
comment
@ChrisCatignani, вы абсолютно правы. Я старался изо всех сил и переосмыслил проблему, спасибо за отзыв.   -  person SelfTaughtCodingIdiot    schedule 22.02.2020


Ответы (1)


В итоге я сделал простое перенаправление.

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)
                {
                    Response.Redirect("401.html");
                }

Я был слишком мил с пользовательскими ошибками.

person SelfTaughtCodingIdiot    schedule 22.02.2020