У меня есть веб-приложение, в которое сотрудники входят, чтобы что-то делать.То, чего я пытаюсь добиться, это: когда пользователь входит в систему с компьютера, если он уже вошел в систему на другом компьютере, это должно быть завершено.Веб-приложение - это MVC Asp.Net Core 2.2 Code.Я добавил signInManager при запуске и отредактировал метод PasswordSignInAsync.Я вхожу в систему с двух разных устройств.Когда я щелкаю что-то на экране с первого компьютера, на котором я вошел, он перенаправляется на выход из системы.Вроде как работает.Но я не уверен, что это правильный способ сделать это.Код, который я добавил: await UserManager.UpdateSecurityStampAsync (пользователь);Внутри метода PasswordSignInAsync.
Внутри класса запуска метода ConfigureServices я добавил
'services.AddIdentity<ApplicationUser, ApplicationRole>()
.AddSignInManager<SignInManagerX>()'
Затем в классе SignInManagerX, который унаследован от SignInManager, я переопределил PasswordSignInAsync
public override async Task<SignInResult>
PasswordSignInAsync(ApplicationUser user, string password,
bool isPersistent, bool lockoutOnFailure)
{
if (user == null)
{
throw new ArgumentNullException(nameof(user));
}
var attempt = await CheckPasswordSignInAsync(user, password,
lockoutOnFailure);
//Here is added
if (attempt.Succeeded)
{
await UserManager.UpdateSecurityStampAsync(user);
}
//Add end
return attempt.Succeeded
? await SignInOrTwoFactorAsync(user, isPersistent)
: attempt;
}
Isэто правильный путь?или я должен добавить таблицу в db для логинов, которая содержит информацию, если пользователь уже вошел в систему на другом Ip.Затем выйдите из системы со всех компьютеров, если последняя и текущая попытка входа в систему верны?