HttpListener: как получить пользователя HTTP и пароль?

На внутреннем объединении они имеют в виду то же самое. Однако Вы получите различные результаты во внешнем объединении в зависимости от того, если Вы вставите условие объединения ГДЕ по сравнению с НА пункте. Смотрите на этот связанный вопрос и этот ответ (мной).

я думаю, что это имеет большую часть смысла быть в привычке к всегда вставлению условия объединения НА пункте (если это не внешнее объединение, и Вы на самом деле хотите его в, где пункт), поскольку это делает его более ясным любому читающему Ваш запрос, на каких условиях таблицы присоединяются, и также это помогает препятствовать тому, чтобы оператор Where был десятками строк долго.

10
задан jdphenix 20 March 2014 в 05:54
поделиться

3 ответа

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

HttpListener listener = new HttpListener();
listener.Prefixes.Add(uriPrefix);
listener.AuthenticationSchemes = AuthenticationSchemes.Basic;
listener.Start();

После получения запроса вы можете извлечь имя пользователя и пароль с помощью:

HttpListenerBasicIdentity identity = (HttpListenerBasicIdentity)context.User.Identity;
Console.WriteLine(identity.Name);
Console.WriteLine(identity.Password);

Вот полное объяснение всех поддерживаемых методов аутентификации, которые можно использовать с HttpListener.

22
ответ дан 3 December 2019 в 15:22
поделиться

Получить заголовок Авторизация . Его формат следующий

Authorization: <Type> <Base64-encoded-Username/Password-Pair>

Пример:

Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

Имя пользователя и пароль разделяются двоеточиями (в этом примере Aladdin: open sesame ), затем закодированы в B64.

4
ответ дан 3 December 2019 в 15:22
поделиться

Сначала вам нужно включить базовую аутентификацию:

listener.AuthenticationSchemes = AuthenticationSchemes.Basic;

Затем в методе ProcessRequest вы можете получить имя пользователя и пароль:

if (context.User.Identity.IsAuthenticated)
{
    var identity = (HttpListenerBasicIdentity)context.User.Identity;
    Console.WriteLine(identity.Name);
    Console.WriteLine(identity.Password);
}
3
ответ дан 3 December 2019 в 15:22
поделиться
Другие вопросы по тегам:

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