Как использовать htpasswd защиту в Tomcat?

Вы можете использовать System.Linq методы расширения Union (чтобы получить объединение двух списков) вместе с Where и All, чтобы отфильтровать элементы, которые вы не хотите включать в первый список: [ 1113]

var result = list2.Union(list1.Where(l1 => list2.All(l2 => l2.ParentId != l1.Id)));

Но обратите внимание, что Union будет использовать метод Equals класса, чтобы определить, совпадают ли два элемента (который по умолчанию является эталонным сравнением), поэтому вам придется переопределить Equals и GetHashCode для удаления дубликатов (где дубликат будет определен вами, в этом случае, я думаю, будет определено, где совпадают свойства Id двух элементов, но, возможно, вы также включите ParentId).

Например:

public class Item
{
    public int Id { get; set; }
    public int? ParentId { get; set; }

    public override int GetHashCode()
    {
        return Id.GetHashCode();
    }

    public override bool Equals(object obj)
    {
        return Id == (obj as Item)?.Id;
    }
}

И тогда пример использования будет:

public class Program
{
    private static void Main(string[] args)
    {
        var list1 = new List<Item>
        {
            new Item {Id = 1, ParentId = null},
            new Item {Id = 2, ParentId = null},
            new Item {Id = 3, ParentId = 1}
        };

        var list2 = new List<Item>
        {
            new Item {Id = 3, ParentId = 1}
        };

        var result = list2.Union(list1.Where(l1 => list2.All(l2 => l2.ParentId != l1.Id)));

        GetKeyFromUser("\nDone! Press any key to exit...");
    }
}
5
задан kenorb 8 April 2015 в 20:57
поделиться

2 ответа

Существует две опции:

  1. Используйте Apache в качестве фронтэнда коту (использующий или mod_jk или mod_proxy_ajp), и Apache делают аутентификацию. Можно найти детали о том, как сделать, таким образом, здесь

  2. Если Вы хотите, чтобы кот сделал аутентификацию, то Вам нужен ot, используют что-то еще, чем htpasswd файл. Существует 4 способа сохранить учетные данные пользователей - использование базы данных, JNDI/LDAP, XML-файла или поставщика JAAS. Можно читать обо всех опциях в ПРАКТИЧЕСКОМ РУКОВОДСТВЕ Конфигурации Области.

2
ответ дан 14 December 2019 в 04:48
поделиться

Наиболее похожим на htpasswd может быть MemoryRealm . У меня самого были проблемы, чтобы найти простой пример того, как его использовать, поэтому я размещу здесь простой пример кода:

  1. Задайте роль, имя пользователя и пароль в tomcat-users.xml

  2. Ваш web.xml должен содержать что-то вроде:

       
      {{ 1}}  
    Мой защищенный веб-сайт 
      
      / *  { {1}}  GET  
      POST  
      {{1} }  
      
      test  {{1} }  
      
      
      BASIC  
      Базовая аутентификация  
      
      
      Тестовая роль  {{ 1}}  test  
      
     
  3. Добавьте это в свой файл server.xml:

       
     
3
ответ дан 14 December 2019 в 04:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: