با ASP.NET MVC کار می کنید و با خطای ذکر شده مواجه می شوید. جای نگرانی نیست چرا که امروز می خواهم راه حل مشکل The anti-forgery token could not be decrypted را ارائه دهم. این مشکل عجیب و غریب که گاهاً با خطای The anti-forgery cookie token and form field token do not match نیز نمایان می شود زمانی بروز می کند که از قابلیت Anti-forgery ارائه شده توسط فِرِیم ورک ASP.NET استفاده کرده باشید. همانطور که شاید پیش از این نیز با این قابلیت آشنا باشید، ممکن است بدانید که این امکان در Framework وجود دارد تا هکر ها و حمله کنندگان نتوانند صفحه ی وب ساخته شده وب سایتتان را بازسازی کنند و اطلاعات دلخواهشان را به سرور شما بفرستند. به عبارت دیگر این قابلیت برای اطمینان حاصل کردن از آن است که اطلاعاتی که توسط کاربران شما در فرم ها ارسال می شوند دقیقاً همان هایی هستند که شما انتظارشان را دارید. دو صفحه ی خطای زیر مربوط به همین مشکل ملعون است. راه حل این مشکل بسیار ساده است اما می تواند علّت بروز آن چند منشأ داشته باشد. پس تک تک راه حل ها را امتحان کنید.
راه حل اول: افزایش عمر Session ها
توجّه داشته باشید که عمر Session ها در سروری که وب سایتتان در آن میزبانی می شود. دیده شده در وب سایت هایی که سِشِن ها خیلی زود ابطال می شوند، این مشکل بسیار وجود خواهد داشت. راه حل آن هم این است که از کنترل پنل پلسک و بخش ASP.NET Settings عمر سشن ها را افزایش دهید. اگر نمی توانید این کار را انجام دهید و یا از سرور مجازی یا اختصاصی استفاده می کنید از پشتیبانی یا مدیر سرور بخواهید این کار را برایتان انجام دهد.
راه حل دوّم: غیر فعال سازی کش Cloudflare
کلود فِلِر سرویس بسیار خوبی است که خدمات بیشمار و مهمی ارائه می دهد. اما یکی از خدمات آن که ذخیره سازی محتویات صفحات وب سایت شماست، ناخواسته در ایجاد این مشکل دخیل است. وقتی صفحه HTML وب سایتتان توسط این سرویس کش می شود، به این معناست که اطلاعات موجود در المنت HTML مربوط به Anti-Forgery هر بار به روز نمی شود. بنابرین بدیهی است که token استفاده شده برای Anti-Forgery نامعتبر می شود.
پس تنها کافیست که این سرویس را غیر فعال کنید. توجّه کنید که نیازی نیست تمامی خدمات Cloudflare را کنار بگذارید. تنها کافی است. به حساب Cloudflare خود وارد شوید و سپس از بخش Rules قانونی را اعمال کنید که برای وب سایتتان سرویس کش اعمال نشود. حل مشکل The anti-forgery token could not be decrypted با همین دو راه کار ساده امکان پذیر است.