تسجيل الإجراءات المخصصة في ASP.NET MVC باستخدام مصادقة النماذج المدمجة

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

سؤال

أنا أستخدم المدمج أشكال المصادقة يأتي مع ASP.NET MVC. أضفت جميع الجداول اللازمة إلى SQL Server باستخدام معالج ASPNET_REGSQL ولدي كل شيء متكامل وتعمل تماما. الآن يمكنني إضافة المستخدمين، قم بتسجيل الدخول، وأداء إذن التحكم وكل هذه الأشياء.

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

لقد رأيت أنه مع المصادقة تأتي جدول يسمى ASPNetWebeventevents ولكن يبدو أنه من المقصود فقط لتخزين الاستثناءات التي حدثت على الموقع الإلكتروني وتم تكوينها باستخدام web.config ويتم تنفيذها تلقائيا. أود فقط استدعاء فئة لتسجيل الإجراءات المخصصة دون الحاجة إلى ملء جميع الحقول يدويا:

Logger.Log("Action performed");

وتخزين المستخدم والوقت وجميع هذه الحقول.

أنا متأكد من أنه يجب أن يكون هناك فئة مطبقة بالفعل للقيام بهذه الأشياء ولا أريد إعادة كتابة شيء تم فعله بالفعل.

حاولت استخدام Sqlwebeventprovider، يبدو أنه الشخص الذي يسمى داخليا ولكن يبدو أن هذه الفئة داخليا لذلك ليس من المقصود استخدامها.

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

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

المحلول

أنا لا أعرف إذا كنت تستطيع إنجاز ذلك مع aspnetWebEventEvents, ، يبدو وكأنك ترغب في تسجيل مواقف محددة لا أعتقد أنها نية هذه الألغام في الميزة.

هل جربت ActionFilters؟، يمكنك القيام بتسجيل محددة حقا مع هذا، على سبيل المثال، يمكنك التحقق من نوع النتيجة لمعرفة ما حدث عندما يحاول المستخدم استخدام هذا الإجراء، ويمكنك الوصول إلى قيم RouteData من خلال ActionExecutedContext:

public class LogActionFilter : ActionFilterAttribute 
    {
        public override void  OnActionExecuted(ActionExecutedContext filterContext)
        {

            if (filterContext.Exception != null)
            {
                //Log - Exception Cases
            }
            else if(filterContext.Result.GetType() == typeof(RedirectToRouteResult))
            {
                //Log - Redirect to other Action
            }
           else 
            {
                //Log the normal behavior 
            }
        }

   }

ثم تقوم بتزيين الإجراءات التي ترغب في تسجيل الدخول مع هذه السمة:

[LogActionFilter]
public ActionResult Edit(int id)
{
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top