Szukałem, ale nie mogłem znaleźć odpowiedzi na to pytanie: czy tożsamość aspnet zapewnia jeden sposób uniknięcia jednoczesnego logowania z tego samego konta?Identyfikacja aspnetu unikaj jednoczesnego logowania tego samego konta
7
A
Odpowiedz
9
Tożsamość nie posiada wbudowany w sposób śledzenia jednoczesnych loginów, ale można zrobić obejście: za każdym razem, dzienniki-in użytkownika, przed ustawieniem auth-ciasteczko, zmiana użytkownika SecurityStamp
przez await userManager.UpdateSecurityStampAsync(user.Id);
I upewnij się, że tę część w swojej Startup.Auth.cs
:
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
Provider = new CookieAuthenticationProvider
{
// Enables the application to validate the security stamp when the user logs in.
// This is a security feature which is used when you change a password or add an external login to your account.
OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
validateInterval: TimeSpan.FromMinutes(5),
regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager))
}
});
w ten sposób każdy użytkownik logowania czas, wszystkie inne sesje zostaną unieważnione, ponieważ SecurityStamp na użytkownika jest zmieniane. I validateInterval
do wystarczająco niskiej wartości, więc inne auth-cookies mogą zostać wkrótce unieważnione.
Powiązane problemy
- 1. Unikaj powtarzania tego samego kodu w konstruktorze kopiującym i operatorze =
- 2. Python: oddzielne procesy logowania do tego samego pliku?
- 3. Używanie konta Google jako logowania ... co dalej?
- 4. Korzystanie z konta Google do logowania
- 5. rozróżnić wyjątki tego samego typu
- 6. Różne trasy tego samego komponentu
- 7. Boost.Spirit.x3 unikaj zwijania dwóch kolejnych atrybutów tego samego typu do wektora
- 8. Wiele klawiszy dostępu dla różnych uprawnień dla tego samego konta S3?
- 9. Przekierowanie PayPal do tego samego okna popup:
- 10. Python: poprawny sposób logowania do tego samego pliku z różnych modułów.
- 11. Używanie tego samego kontrolera na różnych elementach do odnoszenia się do tego samego obiektu
- 12. Odczytywanie i zapisywanie do tego samego pliku przy użyciu tego samego pliku fstream
- 13. Authlogic i wiele sesji dla tego samego użytkownika
- 14. Niekończące się argumenty metody tego samego typu.
- 15. Wiele form tego samego typu - Symfony 2
- 16. Dostęp Muti do tego samego pliku tekstowego
- 17. Wiele aplikacji używa tego samego dostawcy treści
- 18. Związek tego samego typu w C++
- 19. Tablica asocjacyjna, wartości sumy tego samego klucza
- 20. Stosowanie tego samego stylu do wielu elementów
- 21. Sprężyna - wstrzyknij 2 fasole tego samego rodzaju.
- 22. Dlaczego gcc movl do tego samego rejestru?
- 23. Jak uniknąć wielokrotnego wykonywania tego samego zapytania?
- 24. Emacs: wiele widoków tego samego pliku
- 25. Porównaj typedef jest tego samego typu
- 26. Kątowa 2 trasa do tego samego komponentu
- 27. Rendering tego samego obrazu o różnych rozmiarach
- 28. Wiele wątków czytających z tego samego pliku
- 29. Udostępnione obiekty między webappami tego samego kocurka
- 30. Java - Pobieranie pliku z tego samego pakietu
Szukałem sposobu na uniknięcie logowania, jeśli istnieje aktywna sesja dla tego użytkownika. UserManager.GetSecurityStampAsync zrobi lewy? –
@ThiagoCustodio 'GetSecurityStampAsync' zwróci ci tylko znaczek bezpieczeństwa, który jest identyfikatorem GUID zapisanym w zbiorze użytkownika - sam w sobie nie robi zbyt wiele. Jeśli chodzi o unikanie logowania po raz drugi, jest to o wiele bardziej skomplikowane - będziesz musiał jakoś śledzić bieżącą sesję, zachowaj ID dla tego, umieść ten identyfikator w auth-cookie i przy logowaniu sprawdź, czy bieżąca sesja jest taka sama jak już zapisana . I mogę przewidzieć stos problemów z tym podejściem. Ostatecznie, jeśli chcesz, aby użytkownicy przestali udostępniać login, sugerowane podejście wkrótce je udostępni, ponieważ dzielenie haseł jest złe. – trailmax
czeka na userManager.UpdateSecurityStampAsync (user.Id), w którym pliku w MVC 5? – SAR