httplistener: كيفية الحصول على مستخدم HTTP وكلمة المرور؟

StackOverflow https://stackoverflow.com/questions/1147308

  •  18-09-2019
  •  | 
  •  

سؤال

أنا مواجهة مشكلة هنا، مع httplistener.

عند طلب النموذج

http://user:password@example.com/

مصنوع، كيف يمكنني الحصول على المستخدم وكلمة المرور؟ يحتوي HttpWebRequest على خاصية بيانات اعتماد، لكن httplistenerrequest لا يحتوي عليه، ولم أجد اسم المستخدم في أي خاصية منه.

شكرا للمساعدة.

هل كانت مفيدة؟

المحلول

ما تحاول القيام به هو تمرير بيانات الاعتماد عبر مصادقة 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);

إليك شرح كامل من جميع أساليب Authenitcation المدعومة التي يمكن استخدامها مع HTTPlistener.

نصائح أخرى

احصل على ال Authorization رأس. إنه تنسيق هو كما يلي

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

مثال:

Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

اسم المستخدم وكلمة المرور هو Colon-seperated (في هذا المثال، Aladdin:open sesame)، ثم B64 المشفر.

تحتاج إلى أول تمكين المصادقة الأساسية:

listener.AuthenticationSchemes = AuthenticationSchemes.Basic;

ثم في طريقة العملية الخاصة بك، يمكنك الحصول على اسم المستخدم وكلمة المرور:

if (context.User.Identity.IsAuthenticated)
{
    var identity = (HttpListenerBasicIdentity)context.User.Identity;
    Console.WriteLine(identity.Name);
    Console.WriteLine(identity.Password);
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top