• Как кикнуть пользователя в ASP.NET Identity?

    @kttotto
    пофиг на чем писать
    Есть несколько способов:
    1) Если это asp.mvs, то переопределить атрибут Authorize, в ней делать проверку пользователя по какому то полю IsBlackList.
    2) Если это так же asp.mvs, то наверняка Вы поле IsBlackList добавили в Claim, значит авторизацию можно делать на основе Claims и методы помеченные этим атрибутом, будут отсеивать заблокированных. Подробно тут.
    3) Если это asp core, то все тоже самое делается на основе политик безопасности, примеры так же тут.
    4) Но как по мне, то самый простой способ, это при блокировке менять роль пользователю и соответственно контроллеры должны быть помечены теми политиками, в которые не входит роль заблокированного. Этого должно хватить, после блокировки, первый же запрос проверит роль и переадресует на страницу логина.
    Ответ написан
    Комментировать
  • Как повторить последнее действие в приложении?

    AlekseyNemiro
    @AlekseyNemiro
    full-stack developer
    Действие выполнять в отдельном методе, а потом просто вызвать этот метод повторно. Примерно так:
    static Action lastAction = null;
    
    static void AnyAction()
    {
      Console.WriteLine("Выполняю какое-то действие. Не отключайтесь...");
      Thread.Sleep(3000);
    }
    
    static void Repeat()
    {
      Console.WriteLine("Хотите повторить? [Д/н]");
    
      if (char.ToUpper(Console.ReadKey().KeyChar) == 'Д')
      {
        Console.WriteLine();
        lastAction();
        Repeat();
      }
    }
    
    static void Main(string[] args)
    {
      lastAction = AnyAction;
      lastAction();
      Repeat();
    }

    Или использовать очереди и добавлять действие в очередь при необходимости выполнить повтор:

    static Queue<Action> actions = new Queue<Action>();
    
    static void AnyAction()
    {
      Console.WriteLine("Выполняю какое-то действие. Не отключайтесь...");
      Thread.Sleep(3000);
    }
    
    static void Main(string[] args)
    {
      actions.Enqueue(AnyAction);
    
      while (actions.Count > 0)
      {
        actions.Dequeue()();
    
        Console.WriteLine("Хотите повторить? [Д/н]");
    
        if (char.ToUpper(Console.ReadKey().KeyChar) == 'Д')
        {
          Console.WriteLine();
          actions.Enqueue(AnyAction);
        }
      }
    }
    Ответ написан
    1 комментарий