В классе запуска OWIN я добавил собственный метод проверки личности.Администратор может установить поле в базе данных удостоверений, чтобы в следующий раз принудительно выполнить вход.Недостатком является попадание в базу данных каждый раз, когда пользователь посещает веб-страницу.
Если пользователь должен войти в систему на этот раз, флаг принудительного входа в систему сбрасывается, пользователь выходит из системы и перенаправляется на домашнюю страницу, которая затем переходитна страницу входа (и перенаправления обратно на домашнюю страницу после входа в систему).
Этот код также извлекает информацию о файлах cookie для отображения в списке пользователей, которые может просматривать администратор.
private static Task MyCustomValidateIdentity(CookieValidateIdentityContext context)
{
var db = ApplicationDbContext.Create();
var userName = context.Identity.GetUserName();
var user = (from u in db.Users where u.UserName == userName select u).FirstOrDefault();
if (user != null)
{
if (user.ForceLoginNextTime)
{
user.ForceLoginNextTime = false;
db.SaveChanges();
context.OwinContext.Authentication.SignOut(context.Options.AuthenticationType);
context.Response.Redirect("/Home");
}
}
var i = (from u in __userInfo where u.userName == userName select u).FirstOrDefault();
if (i == null)
{
i = new UserInfo();
__userInfo.Add(i);
}
i.userName = userName;
i.CookieIssuedUtc = context.Properties.IssuedUtc;
i.CookieExpiresUtc = context.Properties.ExpiresUtc;
i.CookieIsPersistent = context.Properties.IsPersistent;
return Task.FromResult(0);
}