Как добавить пользовательскую проверку в рабочий процесс аутентификации на основе OWIN в ASP. NET MVC 5? - PullRequest
1 голос
/ 24 марта 2020

Я использую ASP. NET Identity 2 в ASP. NET MVC 5 проекте, который аутентифицируется исключительно через внешнего провайдера, и пока все работает. Я хочу добавить пользовательскую процедуру проверки с использованием пользовательских данных.

Например, предположим, что моя модель IUser имеет настраиваемое поле bool (Active). При выполнении внешней аутентификации /Account/ExternalLoginCallback делает следующее:

var loginInfo = await AuthenticationManager.GetExternalLoginInfoAsync();
if (loginInfo == null)
{
    return RedirectToAction("Login");
}

// Sign in the user with this external login provider if the user already has a login
var result = await SignInManager.ExternalSignInAsync(loginInfo, isPersistent: false);
switch (result)
{
    case SignInStatus.Success:
        return RedirectToLocal(returnUrl);
    case SignInStatus.LockedOut:
        return View("Lockout");
    case SignInStatus.RequiresVerification:
        return RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = false });
    case SignInStatus.Failure:
    default:
        //...
}

Аутентификация ie создается, кажется, в вызове SignInManager.ExternalSignInAsync.

Что я хочу Я знаю, есть ли какой-нибудь способ, которым я могу подключить этот вызов к SignInManager.ExternalSignInAsync и добавить свой собственный процесс проверки (например, проверить, установлен ли флаг пользователя Active true), чтобы я мог вернуть метод SigInStatus.Failure в если мой пользовательский процесс завершится неудачно (в следующем примере Active будет ложным).

Заранее спасибо.

...