مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

morteza373

عضویت از 1394/10/30

پیاده سازی اشتراک ویژه (vip) در mvc

  • سه شنبه 14 آذر 1396
  • 13:23
تشکر میکنم

سلام

خسته نباشید

من میخوام اشتراک ویژه پیاده سازی کنم ولی آموزشی در این رابطه پیدا نکردم ،

برای همین خودم اومدم دو تا فیلد به جدول user  اضافه کردم ، یکی برای نگهداری تاریخ آخرین شارژ تا بتونم هر بار که کاربر لاگین میکنه با تاریخ جاری مقایسه کنم و اگر بیشتر از یک ماه بشه ، فیلد دیگر را مقدارش رو true  کنم (یعنی کاربر نیاز به شارژ حسابش داره) و در نهایت به صفحه شارژ اکانت vip  هدایت بشه ، ولی یه مشکلی هست :

اینکه اگه کاربر بیاد آدرس صفحات رو به طور دستی تایپ کنه میتونه وارد اونا بشه ، یعنی چطور میتونم هنگامی که کاربر یک آدرس را درخواست میکنه ویک اکشن صدا زده میشه ، بررسی کنم که کاربر شارژ حسابش تموم شده یا نه ؟

مرسی

پاسخ های این پرسش

تعداد پاسخ ها : 1 پاسخ
کاربر سایت

سهیل علیزاده

عضویت از 1396/04/09

  • سه شنبه 14 آذر 1396
  • 13:45

این کار را باید توسط یک ActionFilter انجام دهید، میتوان مشخص کنید برروی کد Action یا Controller این مورد بررسی شود همچنین میتوان این کار را به صورت Global برروی تمامی Controller ها اعمال کنید.

    public class HasChargeAttribute : ActionFilterAttribute
    {
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            base.OnActionExecuting(filterContext);
            var hasCharge = true;

            if (!hasCharge)
            {
                filterContext.Result = new HttpStatusCodeResult(403);
            }
        }
    }
      [HasCharge]
        public ActionResult Index()
        {
            return View();
        } 

به صورت Global باید به فایل FilterConfig بروید و این فیلتر را اضافه کنید:

    public class FilterConfig
    {
        public static void RegisterGlobalFilters(GlobalFilterCollection filters)
        {
            filters.Add(new HasCharge());
        }
    }

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

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

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)