asp.net mvc - كيف يمكنني تمرير البيانات من أوثوريزاتريبوت إلى وحدة تحكم؟



asp.net-mvc controller (1)

الجواب الأصلي

يجب أن تكون قادرا على القيام بذلك في الفلتر الخاص بك

filterContext.HttpContext.Items["test"] = "foo";

ثم هذا في عملك

_yourVariable = HttpContext.Items["test"];

ربما كنت تريد استخدام مفتاح أكثر فريدة من "test" ، ولكن هذه هي الفكرة.

إديت هناك سببان نقوم بهما في العمل بدلا من المنشئ:

  1. حريق منشئ المراقب المالي قبل أونوثوريزاتيون ، لذلك لن يتم تعيين هذا البند بعد.
  2. لم يتم تعيين هتبكونتيكست بعد في منشئ وحدة التحكم.

حل بديل

  1. إنشاء OAuthController : Controller جديدة OAuthController : Controller
  2. تجاوز OnAuthorization
  3. نقل المنطق من الفلتر الخاص بك إلى OAuthController.OnAuthorization
  4. تعيين حقل protected (أي protected object myAuthData ) في protected object myAuthData
  5. هل لديك وحدات تحكم أخرى ترث من OAuthController بدلا من Controller
  6. وحدات التحكم الأخرى الخاصة بك يمكن الوصول إلى myAuthData .

لقد أنشأت أوثوريزاتريبوت مخصص الذي يتحقق من بعض بيانات اعتماد أووث التي يتم إرسالها داخل رأس هتب. أنا أستخدم بعض أوراق الاعتماد هذه لتحديد من الذي يقدم الطلب. بمجرد تحليل هذه المعلومات في أوثوريزاتريبوت هل هناك أي طريقة لتمريرها بحيث يمكن تعيين البيانات إلى متغير مثيل من وحدة تحكم؟ ثم في أي مكان في وحدة تحكم بلدي سوف يكون معرف الطرف الطالب.





authorize-attribute