T-SQL, эквивалентный из Excel “MAX”, функционирует для возврата больше из двух чисел [дубликат]

Чтобы создать безопасный механизм аутентификации, вы должны использовать как клиентские сертификаты, так и имя пользователя / пароль. Причина в том, что сертификат - это то, что может быть украдено (скопировано), а пароль - это то, что известно только человеку. Альтернативой может быть сертификат на смарт-карте, защищенный PIN-кодом.

Чтобы использовать клиентские сертификаты в приложениях ASP.NET, необходимо сделать следующее:

Шаг 1: В IIS Manager откройте свое приложение или веб-сайт, выберите «Настройки SSL» и выберите оба требуют SSL и требуют клиентского сертификата.

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

Важно На этом этапе вы должны убедиться, что сертификат выпущен кем-то, кому вы доверяете (поскольку каждый может создавать свои собственные самозаверяющие сертификаты).

Шаг 2: Добавить элемент конфигурации (либо web.config, база данных и т. Д.). В этот список вы добавили бы отпечатки всей цепочки CA (центра сертификации) для ваших клиентских сертификатов.

<add key="ClientCertificateIssuerThumbprints" value="4901f5b87d736cd88792bd5ef7caee91bf7d1a2b,0113e31aa85d7fb02740a1257f8bfa534fb8549e,c9321de6b5a82666cf6971a18a56f2d3a8675602"/>

Шаг 3: Создайте классическую страницу имени пользователя и пароля. Проверьте имя пользователя / пароль.

Шаг 4: Добавьте следующий код на страницу входа в систему:

var x509 = new X509Certificate2(this.Request.ClientCertificate.Certificate);
var chain = new X509Chain(true);
chain.ChainPolicy.RevocationMode = X509RevocationMode.Offline;
chain.Build(x509);

var validThumbprints = new HashSet<string>(
    System.Configuration.ConfigurationManager.AppSettings["ClientCertificateIssuerThumbprints"]
        .Replace(" ", "").Split(',', ';'),
    StringComparer.OrdinalIgnoreCase);

// if the certificate is self-signed, verify itself.
for (int i = chain.ChainElements.Count > 1 ? 1 : 0; i < chain.ChainElements.Count; i++)
{
    if (!validThumbprints.Contains(chain.ChainElements[i].Certificate.Thumbprint))
        throw new UnauthorizedAccessException("The client certificate selected is not authorized for this system. Please restart the browser and pick the certificate issued by XXXXX");
}

// certificate Subject would contain some identifier of the user (an ID number, SIN number or anything else unique). here it is assumed that it contains the login name and nothing else
if (!string.Equals("CN=" + login, x509.Subject, StringComparison.OrdinalIgnoreCase))
    throw new UnauthorizedAccessException("The client certificate selected is authorized for another user. Please restart the browser and pick another certificate.");

Только когда пароль и сертификат проверены, пользователь должен быть разрешен в системе. .

9
задан Community 23 May 2017 в 12:31
поделиться

4 ответа

Я не знаю Не знаю, существует ли нужная вам функция, но мне больше нравится эта функция.

set @max = case when @first > @second then @first else @second end
10
ответ дан 4 December 2019 в 11:08
поделиться

Вы можете использовать:

CASE
   WHEN @First >= @Second THEN @FIRST
   ELSE @Second
END
4
ответ дан 4 December 2019 в 11:08
поделиться

объявить @first int, @second int

выбрать @ first = 45, @ second = 123

выбрать max (a) из (выберите @ сначала UNION ALL выберите @second) x

- OR

выберите max (a) from (values ​​(@first), (@ second)) x (a)

4
ответ дан 4 December 2019 в 11:08
поделиться

К сожалению, нет.

Слово предупреждения, для чрезвычайно интенсивного использования, я обнаружил, что скалярные функции (даже те, которые могут быть легко встроены с помощью CASE , как и ваш) действительно не хорошо работают на SQL Server 2005, поэтому, если вы имеете дело с миллионами вызовов, поместите его в строку (иногда вы можете подделать встроенный TVF).

Надеюсь, SQL Server в конечном итоге будет иметь встроенный SVF или функцию, эквивалентную GREATEST !

1
ответ дан 4 December 2019 в 11:08
поделиться
Другие вопросы по тегам:

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