Vijai Anand.G Ответов: 2

Как реализовать выход из системы на всех устройствах ASP.NET MVC


Я пытаюсь разработать единое приложение для входа в систему, где зарегистрированные пользователи могут дать свой pin-код для входа в систему . У нас есть API для проверки и предоставления access_token для пользователей pin-кода.Мы должны рассматривать последний экземпляр браузера pin-кода пользователя как действительный.Если пользователь pin-кода пытается получить доступ к предыдущему экземпляру браузера, нам нужно перенаправить его на домашнюю страницу.
Может ли кто-нибудь помочь мне, как решить эту проблему?

Что я уже пробовал:

Я пытался сохранить объект приложения (ключ в виде pin-кода), но ничего не помогает.

ZurdoDev

Я не понимаю вашего вопроса.

Vijai Anand.G

Я не использую имя пользователя и пароль для входа в систему inspite я использую pin-код, который связан с именем пользователя и паролем для входа в систему.Я использую api для проверки pin-кода , он вернет токен доступа, если pin-код действителен.вот как я могу выйти из системы на всех экземплярах приложений и браузерах при входе в систему с нового устройства или браузера.

2 Ответов

Рейтинг:
1

Marbry Hardin

Вы можете использовать что-то вроде SignalR, где все ваши приложения подписаны на метод уведомления клиента LogOut ().

Затем, когда любой из них вызывал серверный метод LogMeOut (), он мог запустить LogOut() для всех подписанных клиентов.


Рейтинг:
1

Afzaal Ahmad Zeeshan

Я думаю, что добавление SignalR будет ненужным, так как мы можем легко хранить значения и по запросу мы можем проверить, являются ли они действительными или нам нужно их заблокировать. Кроме того, SignalR требует, чтобы вы добавили дополнительный уровень сервиса, и если соединения не будут очищены, они могут повторно использовать маркер в зависимости от того, как мы очищаем данные и соединения.

Цитата:
Мы должны рассматривать последний экземпляр браузера pin-кода пользователя как действительный.
Затем храните только последнюю версию pin-кода и токен. Ваша таблица токенов должна быть примерно такой,
// Assuming that you are using Entity Framework, or similar. Otherwise, table structure.
public class Token {
    public string Id { get; set; }
    public string UserId { get; set; }
    public string Token { get; set; } // Your pin code here
    public DateTime ExpiresAt { get; set; }
}
Теперь, когда пользователь входит в новый браузер, вы должны проверить, есть ли у текущего пользователя токен, если он есть, а затем обновить этот токен новым токеном для текущего браузера. Если у них его нет—то есть это единственный сеанс—создайте новый токен и назначьте его пользователю.

В вашем модуле аутентификации вы должны затем проверить, действителен ли токен—поскольку у нас есть только один токен, он будет действителен только для этого браузера—а затем позволить им получить доступ к веб-сайту.

Советы по безопасности для вас, так как это простой способ для пользователей манипулировать и повторно использовать токен в нескольких браузерах. Вы должны передавать только то значение токена, которое вы сгенерировали. В фоновом режиме сохраните значение агента браузера, IP-адрес, с которого они вошли в систему, и таким образом вы сможете проверить, был ли это тот же самый браузер, который они использовали, когда им был предоставлен токен. Если они повторно использовали токен где-то еще, то вы также можете отклонить его, так как другие параметры не будут совпадать.
Цитата:
нам нужно перенаправить их на домашнюю страницу.
Это будет автоматически управляться для вас, если этот токен и другие параметры не являются допустимыми, то ваше приложение автоматически перенаправит их.