2

Я являюсь usigin Asp.net Identity для аутентификации пользователя, и я пытаюсь заблокировать любого пользователя с административной стороны. Но когда я блокирую любого пользователя, который находится в сети, он не вышел из системы. Я прочитал много комментариев о моей проблеме, но все они не работали. Я попробовал UserManager.UpdateSecurityStamp выйти из системы, но это не сработало. Как я могу выйти из системы сразу после блокировки?Asp.net Identity logout другой пользователь

public ActionResult LockUser(string userId) 
     { 
      _userManager.SetLockoutEnabled(userId, true); 
      _userManager.SetLockoutEndDate(userId,DateTime.Today.AddYears(999)); 

      var user = _userManager.FindById(userId); 
      _userManager.UpdateSecurityStamp(userId); 

      return RedirectToAction("UserDetail",new { userId }); 
     } 


app.UseCookieAuthentication(new CookieAuthenticationOptions 
      { 
       AuthenticationMode = AuthenticationMode.Active, 
       AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, 
       LoginPath = new PathString("/UnAuthorize/Index"), 
       Provider = new CookieAuthenticationProvider 
       { 

        OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<AppUserManager, User>(
         validateInterval: TimeSpan.FromMinutes(1), 
         regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager)) 
       } 
      }); 
+0

Это должно на самом деле это сделать. Но это дает минутное окно для того, чтобы пользователь все еще использовал систему после того, как вы назвали марку безопасности обновления. Попробуйте изменить 'validateInterval' на 0 в' SecurityStampValidator' и посмотреть, что произойдет – trailmax

+0

Я попробовал validateInterval = 0, но он не работал снова. Я использую autofac, и я задаюсь вопросом, произошла ли эта проблема из-за этого –

ответ

1

Скорее всего вам не хватает регистрации ApplicationUserManager с Owin. Вы все еще должны позволить OWIN знать, как получить пользовательский менеджер, потому что он использует его для получения новой марки безопасности для пользователя.

В вас Startup.Auth.cs убедитесь, что у вас есть эта регистрация:

app.CreatePerOwinContext(() => DependencyResolver.Current.GetService<ApplicationUserManager>()); 
+0

, это сработало, спасибо @trailmax –

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