2015-04-03 2 views
0

Я недавно внедрил систему идентификации asp на свой сайт.Выйти все пользователи с таким же именем пользователя asp identity

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

Я реализовал это плохо? Предполагается, что он пуст? Кажется, что все работает без проблем.

Если это должно быть пусто, я должен заполнить его вручную?

Is AspNetUserClaims также должен быть пустым, пока я не сделаю заказ на него?

Любые другие идеи о том, как реализовать эту автоматическую систему выписки?

Редактировать: Простые исследования и реализованные aspnetuserslogins предназначены только для внешних логинов. Но что на самом деле хранит журналы того, кто входит в систему?

+0

Насколько я знаю, ничто не хранит журналы того, кто вошел в систему, кроме самих пользователей, обладающих правильным печеньем. То, что вы делаете, вероятно, принесет больше вреда, чем пользы - что, если это один человек, но они хотят войти на свой мобильный телефон и на свой рабочий стол? Или у них есть два рабочих стола? Или два браузера? Если бы я был вами, я бы вместо этого перехватил логины, зарегистрировал их в каком-то файле с информацией о геолокации и времени доступа. Затем создайте отчет, основанный на том, что поможет вам найти людей, которые делят свой логин. А затем разобраться с ними в каждом конкретном случае. – mason

+0

Хорошо, вы на самом деле правы. Но, что касается андерсеров, нет системы, которая ее поддерживает, если я не буду ее внедрять (я не хочу). Но, честно говоря, я не вижу в этом большого вреда, что он будет регистрировать людей на разных плакасах. Я имею в виду его одного человека, делающего работу, поэтому он не может работать в двух местах одновременно, но все в порядке. Я просто создаю журнал с IP-адресом и устройством. Спасибо. – misha130

+0

«он не может работать в двух местах одновременно». Неправильно. Два разных браузера, или два разных компьютера, или телефон и компьютер. Телефон и планшет. Планшет и компьютер. Вы не знаете, какие настройки и рабочие процессы людей правильные - не рискуйте раздражать своих пользователей, подписав их. Просто обратите внимание, когда вы уверены, что два разных человека используют его (на основе журналов), а затем, при необходимости, свяжутся с ними. – mason

ответ

1

Вам необходимо сохранить список зарегистрированных пользователей в каком-либо месте, например, в базе данных или в файле. И когда новый пользователь пытается войти в систему для поиска предыдущих записей, если пользователь с именем уже зарегистрирован или нет.

Если найден дубликат, то просто обновите SecurityStamp.

UserManager.UpdateSecurityStampAsync(userId); 

Поэтому в следующий раз тока пользователи проверить концы интервала и SecurityStamp признается недействительным, он будет autmatically зарегистрированны аут. Вы можете найти интервал проверки в своем классе конфигурации.

app.UseCookieAuthentication(new CookieAuthenticationOptions 
{ 
    ExpireTimeSpan = System.TimeSpan.FromDays(30), 
    AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, 
    Provider = new CookieAuthenticationProvider 
    {       
     OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
      validateInterval: TimeSpan.FromMinutes(30), 
      regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager)) 
    } 
}); 

И после вызова метода выше просто войдите в новый пользователь и обновите свой регистрационный список.

NTOE Это очень плохая практика для обеспечения соблюдения таких политик. Старайтесь избегать его как можно больше. Даже разные браузеры, или один браузер с отдельными сеансами, будут считаться дубликатными входами.

+0

да. сначала вам нужно убедиться, что это дублирующийся знак в попытке связаться со старыми учетными записями. И если это так, то просто обновите «SecurityStamp». После этого войдите в новый пользователь и обновите свои журналы входа. Если это не повторная попытка входа в систему, нет необходимости обновлять «SecurityStamp» только для входа в систему нового пользователя и обновления учетных записей. –

+0

Ну, когда я добавил обновление Security Stamp, все мои пользователи отключились (все идентификаторы пользователей) всякий раз, когда я ввожу или когда кто-то входит. Конечно, я проверил UserID на нем, и все данные были правильными. Я начинаю думать, что добавление специального атрибута авторизации - единственный способ сделать это. – misha130

+0

попытайтесь просмотреть штамп безопасности в своей базе данных и посмотреть, что происходит, когда вы вызываете этот метод. Необходимо обновить только один штамп безопасности. Иными словами, вы делаете что-то неправильно. Также вам нужно поделиться тем, какой код вы написали, чтобы сообщество могло помочь вам, если есть проблема. Кроме того, даже если вы создадите пользовательский атрибут AuthorizeAttribute, вам все равно придется использовать тот же метод для входа в систему, который в настоящее время вошел в систему. –

Смежные вопросы