• 1402/01/03

ساخت Action Filter اختصاصی برای لاگ گیری و احراز هویت در Asp,.net mvc :

سلام دوستان عزیزم، سوالی نیست فقط چیزی که اخیرا یاد گرفتم و چیز باحال و کاستومایزی هست رو می خواستم خدمت شما هم آموزش بدم.

با ساخت یک  اکشن فیلتر ساده در mvc میتوان هم لاگ زد توی دیتابیس از کاربرانی که دسترسی ادمین دارند و هم جلوگیری کرد از ورود افراد بدون دسترسی.

اطلاعات لاگی که سیو میشه عبارتند از :

ip

سیستم عامل

و بخشی که شخص خواسته به اون وارد بشه...

از طرفی که من تو سایت خودم فقط ادمین هستم، یوزر وارد شده رو دیگه سیو نمی کنم چون فقط خودمم....

به این صورت عمل می کنیم.

public class LogActionFilter : ActionFilterAttribute, IActionFilter
    {
        void IActionFilter.OnActionExecuting(ActionExecutingContext filterContext)
        {
            using (KopolArtContext db = new KopolArtContext())
            {
                if (db.Users.Any(a => a.Roles == "Admin" && a.Email == filterContext.HttpContext.User.Identity.Name))
                {
                    db.Ips.Add(new Log
                    {
                        DateEnter = DateTime.Now,
                        IP = (HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] ?? HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]).Split(',')[0].Trim(),
                        OP = $"{HttpContext.Current.Request.Browser.Browser}({HttpContext.Current.Request.Browser.Version})",
                        AdminPart = HttpContext.Current.Request.RawUrl.Remove(0, 6).Replace("/", "")
                    });
                    db.SaveChanges();
                }
                else
                {
                    filterContext.Result = new RedirectResult("/Login");  // Not Admin
                }
            }
        }
    }

 

  • 1402/01/03
  • ساعت 14:54

استفاده ازش هم که بسیار ساده است و باید در بالای اکشن ها یا کنترلر های مورد نظر صداش بزنید.


  • 1402/01/04
  • ساعت 02:42

سلام دوست من وقتتون بخیر

ممنون بابت به اشتراک گذاری این نکته اموزشی


  • 1402/01/04
  • ساعت 10:50

دوستان عزیز یه کار جالب دیگه اینکه می تونید به راحتی با یکسری دستور ساده استفاده از پنل ادمین رو محدودتر کنید کنید...

یعنی علاوه بر بررسی user و role اون، چیزایی دیگه هم بررسی بشه

مثلا بگید فلان سیستم با فلان ip و فلان نام فقط حق دسترسی داشته باشه:

HttpContext.Current.Request.UserAgent.Contains("SM-A750N")   // a7(2018) samsung
HttpContext.Current.Request.UserHostAddress.Substring(0,7)=="78.145."
// ips that start with 78.145.

و خیلی چیزای دیگه که با یکم صرف وقت میشه امنیت رو بیشتر کرد


logo-samandehi