http حل مشكلة - RESTful Login Failure: Return 401 or Custom Response




1 Answers

أولا قبالة. 401 هو رمز الاستجابة المناسبة لإرسال عندما حدث تسجيل دخول فاشلة.

401 غير مصرح به مشابه لـ 403 ممنوع ، ولكن بشكل محدد للاستخدام عندما تكون المصادقة مطلوبة وقد فشلت أو لم يتم توفيرها بعد. يجب أن تتضمن الاستجابة حقل رأس WWW-Authenticate يحتوي على تحد ينطبق على المورد المطلوب.

myservice.com/are/these/credentials/valid حول ، myservice.com/are/these/credentials/valid إرسال مرة أخرى 401 عند إجراء فحص ، أعتقد أنه يعتمد على حقيقة أن القيام بالطلبات المنطقية في REST غالبًا ما يكون خطأ بسبب قيود RESTful. يجب أن يرجع كل طلب موردًا. إن القيام بالأسئلة المنطقية في خدمة RESTful هو أمر سلبي زلق وصولاً إلى RPC.

الآن لا أعرف كيف تتصرف الخدمات التي نظرت إليها. ولكن طريقة جيدة لحل هذا هو أن يكون لديك شيء مثل كائن الحساب ، الذي تحاول أن تحصل عليه. إذا كانت بيانات اعتمادك صحيحة ، فستحصل على كائن الحساب ، إذا كنت لا ترغب في إهدار النطاق الترددي فقط إلى "التحقق" ، فيمكنك إجراء ذلك على نفس المصدر.

يعتبر "كائن الحساب" أيضًا مكانًا رائعًا لتخزين كل تلك القيم المنطقية المزعجة التي قد يكون من الصعب إنشاء موارد فردية لها.

status 500

هذا سؤال مفاهيمي.

لدي تطبيق عميل (محمول) يحتاج إلى دعم إجراء تسجيل دخول ضد خدمة ويب RESTful. نظرًا لأن خدمة الويب هي RESTful ، فهذا يرقى إلى قبول العميل لاسم المستخدم / كلمة المرور من المستخدم ، والتحقق من اسم المستخدم / كلمة المرور هذه مع الخدمة ، ثم تذكر فقط إرسال اسم المستخدم / كلمة المرور هذه مع جميع الطلبات اللاحقة.

يتم توفير جميع الاستجابات الأخرى في خدمة الويب هذه بتنسيق JSON.

السؤال هو ، عندما أستعلم عن خدمة الويب لمجرد معرفة ما إذا كان اسم المستخدم / كلمة المرور معينين صالحين ، يجب أن تستجيب خدمة الويب دائمًا ببيانات JSON التي تخبرني بأنها ناجحة أو غير ناجحة ، أو يجب أن تعرض HTTP 200 على بيانات اعتماد جيدة و HTTP 401 على أوراق اعتماد سيئة.

السبب الذي أسأله هو أن بعض خدمات RESTful الأخرى تستخدم 401 لبيانات اعتماد سيئة حتى إذا كنت تسأل فقط إذا كانت بيانات الاعتماد صالحة. ومع ذلك ، فهمي ل 401 الردود هي أنها تمثل موردًا لا يفترض أن يكون لديك حق الوصول إليه بدون بيانات اعتماد صالحة. ولكن يجب أن يكون مورد تسجيل الدخول متاحًا لأي شخص نظرًا لأن الغرض من مورد تسجيل الدخول بالكامل هو إخبارك عما إذا كانت بيانات اعتمادك صالحة.

بعبارة أخرى ، يبدو لي أن طلبًا مثل:

myservice.com/this/is/a/user/action 

يجب إرجاع 401 إذا تم توفير بيانات الاعتماد السيئة. لكن طلب مثل:

myservice.com/are/these/credentials/valid

يجب عدم إرجاع 401 لأن عنوان URL المعين (الطلب) مصرح به مع أو بدون بيانات اعتماد صالحة.

أود سماع بعض الآراء المبررة بطريقة أو بأخرى في هذا الشأن. ما هي الطريقة القياسية للتعامل مع هذا ، وهل الطريقة القياسية للتعامل مع هذا مناسب منطقيا؟




Related