Выход пользователя с других компьютеров (на которых он входил ранее) при входе с другого компьютера - PullRequest
0 голосов
/ 11 февраля 2019

У меня есть веб-приложение, в которое сотрудники входят, чтобы что-то делать.То, чего я пытаюсь добиться, это: когда пользователь входит в систему с компьютера, если он уже вошел в систему на другом компьютере, это должно быть завершено.Веб-приложение - это 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.Затем выйдите из системы со всех компьютеров, если последняя и текущая попытка входа в систему верны?

1 Ответ

0 голосов
/ 12 февраля 2019

Да, основная цель SecurityStamp - разрешить выход везде.

Основная идея заключается в том, что всякий раз, когда что-то, связанное с безопасностью, изменяется на пользователя, например пароль, рекомендуется автоматически аннулировать любой существующий вход в файлы cookie, поэтому, если ваш пароль / учетная запись была ранее взломана,злоумышленник больше не имеет доступа.

Ссылка: https://stackoverflow.com/a/19505060/5751404

Вы можете установить validateInterval в TimeSpan.Zero для немедленного выхода из системы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...