Как я могу настроить PostgreSQL для использования аутентификации Windows?

Перегрузка Sort, которую вы должны использовать, - это:

procedure Sort(const AComparer: IComparer<TMyRecord>);

Теперь вы можете создать IComparer<TMyRecord>, вызвав TComparer<TMyRecord>.Construct. Например:

var
  Comparison: TComparison<TMyRecord>;
....
Comparison := 
  function(const Left, Right: TMyRecord): Integer
  begin
    Result := Left.intVal-Right.intVal;
  end;
List.Sort(TComparer<TMyRecord>.Construct(Comparison));

Я написал функцию Comparison как анонимный метод, но вы также можете использовать обычную функцию non-OOP для старого стиля или метод объекта.

. Одна потенциальная проблема с вашей функцией сравнения заключается в том, что вы можете страдать от переполнения целого числа. Таким образом, вместо этого вы можете использовать целочисленный компаратор по умолчанию.

Comparison := 
  function(const Left, Right: TMyRecord): Integer
  begin
    Result := TComparer<Integer>.Default.Compare(Left.intVal, Right.intVal);
  end;

Возможно, было бы дорого вызывать TComparer<Integer>.Default несколько раз, чтобы вы могли сохранить его в глобальной переменной:

var
  IntegerComparer: IComparer<Integer>;
....
initialization
  IntegerComparer := TComparer<Integer>.Default;

Еще один вариант, который следует учитывать, - это передать в компаньон при создании списка. Если вы только сортируете список, используя этот порядок, то это более удобно.

List := TList<TMyRecord>.Create(TComparer<TMyRecord>.Construct(Comparison));

И затем вы можете отсортировать список с помощью

List.Sort;
17
задан Devdatta Tengshe 10 August 2010 в 12:15
поделиться

1 ответ

Если сервер Postgresql работает под Windows так же, как и клиенты, то вы можете протестировать это, чтобы увидеть, работает ли это:

host all all 0.0.0.0/0 sspi

Магнус Хагандер, разработчик Postgresql, рассказывает об этом:

"Все пользователи, подключающиеся с локальной машины, вашего домена или доверенного домена, будут автоматически аутентифицированы с помощью настроенной аутентификации SSPI (вы можете включить/выключить такие вещи, как NTLMv2 или LM с помощью групповой политики - это настройка Windows, а не PostgreSQL). Вам все еще нужно создать роль входа в PostgreSQL, но это все. Обратите внимание, что домен не проверяется вообще, только имя пользователя. Поэтому пользователь Administrator в вашем основном и доверенном домене будет считаться одним и тем же пользователем, если он попытается подключиться к PostgreSQL. Обратите внимание, что этот метод не совместим с клиентами Unix."

Если вы смешиваете Unix-Windows, то вам придется прибегнуть к kerberos с использованием GSSAPI, что означает, что вам придется выполнить некоторые настройки. Эта статья о развертывании Pg в среде Windows может направить вас на правильный путь.

12
ответ дан 30 November 2019 в 13:39
поделиться
Другие вопросы по тегам:

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