2014-09-16 13 views
16

Używam asp.net MVC i ASP.net Identity 2.0.ASP.net Identity 2.0 Wyloguj innego użytkownika

Na mojej stronie Administrator ma możliwość zablokowania użytkownika, a ja chciałbym, aby użytkownik został zbanowany automatycznie po wylogowaniu się ze strony internetowej.

wiem, że mogę wylogowania bieżącego użytkownika poprzez wywołanie

AuthenticationManager.SignOut(); 

Ale jest to możliwe do wylogowania innego użytkownika? A może krótsza sesja? Czy coś?

Wiem, że mógłbym wprowadzić filtr globalny na kontrolerach zabraniających zbanowanym użytkownikom dostępu, ale filtr ten byłby uruchamiany przeciwko każdemu użytkownikowi, więc nie jestem zadowolony z tego rozwiązania.

+1

powinien buforować każdemu użytkownikowi ban, a następnie usunąć jego cookies w filtrze. – Fals

Odpowiedz

12

Musisz skonfigurować ciasteczka unieważnienia w Auth.Config.cs:

public void ConfigureAuth(IAppBuilder app) 
{ 
    // important to register UserManager creation delegate. Won't work without it 
    app.CreatePerOwinContext(UserManager.Create); 

    app.UseCookieAuthentication(new CookieAuthenticationOptions 
    { 
     Provider = new CookieAuthenticationProvider 
     { 
      OnValidateIdentity = SecurityStampValidator 
       .OnValidateIdentity<UserManager, ApplicationUser, int>(
        validateInterval: TimeSpan.FromMinutes(10), 
        regenerateIdentityCallback: (manager, user) => user.GenerateUserIdentityAsync(manager)) 
     }, 
     // other configurations 
    }); 

    // other stuff 
} 

a następnie zaktualizować znaczka zabezpieczającego jako Hao Kung mówi, gdy użytkownicy są zakazane.

mam blogged about this recently

+0

app.CreatePerOwinContext (UserManager.Create) - załatw mi sprawę. Używam autofac, więc w moim przypadku wygląda to tak: app.CreatePerOwinContext (() => DependencyResolver.Current.GetService ()); app.CreatePerOwinContext (() => DependencyResolver.Current.GetService >()); Gdzie Db to DbContext , a użytkownik jest klasą wywodzącą się od TożsamośćUżytkownika – Sergey

14

Jeśli używasz funkcji securitystampvalidator, gdy użytkownik jest zbanowany, po prostu wywołaj: UpdateSecurityStamp(userId), aby spowodować, że jakiekolwiek istniejące pliki cookie dotyczące plików cookie będą nieprawidłowe przy następnym sprawdzaniu.

More info about SecurityStamp?

+0

Dodałem tę linię kodu do mojego projektu, ale użytkownik nie został wylogowany, czy możesz mi nieco wyjaśnić, jak powinienem go używać? – hyperN

+7

Nie rejestruje natychmiast użytkownika, na znaczku bezpieczeństwa znajduje się validateInterval, który należy skonfigurować w celu sprawdzenia, jak często plik cookie jest sprawdzany. –

Powiązane problemy