سلام
خسته نباشید
من میخوام اشتراک ویژه پیاده سازی کنم ولی آموزشی در این رابطه پیدا نکردم ،
برای همین خودم اومدم دو تا فیلد به جدول user اضافه کردم ، یکی برای نگهداری تاریخ آخرین شارژ تا بتونم هر بار که کاربر لاگین میکنه با تاریخ جاری مقایسه کنم و اگر بیشتر از یک ماه بشه ، فیلد دیگر را مقدارش رو true کنم (یعنی کاربر نیاز به شارژ حسابش داره) و در نهایت به صفحه شارژ اکانت vip هدایت بشه ، ولی یه مشکلی هست :
اینکه اگه کاربر بیاد آدرس صفحات رو به طور دستی تایپ کنه میتونه وارد اونا بشه ، یعنی چطور میتونم هنگامی که کاربر یک آدرس را درخواست میکنه ویک اکشن صدا زده میشه ، بررسی کنم که کاربر شارژ حسابش تموم شده یا نه ؟
مرسی
این کار را باید توسط یک 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()); } }
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)