
خب خوده mvc به صورت پیش فرض از get استفاده میکنه ! میخام بدونم دلیلی داره واسه این کار ؟ چون پیشنهاد شده از فرم های آماده mvc استفاده بشه ! اما خب این فرم ها دارن از get استفاده میکنن !!!
خب سوالم همینه ،چطور این راه رو ببندیم ؟ اصلا تو mvc که از EF استفاده میکنه لازمه جلوی این کار رو گرفت ؟ تا چه حد ؟
// GET: Administrator/News/Delete/5
public async Task<ActionResult> Delete(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
News news = await _db.News.FindAsync(id);
if (news == null)
{
return HttpNotFound();
}
return View(news);
}// POST: Administrator/News/Delete/5
[HttpPost, ActionName("Delete")]
[ValidateAntiForgeryToken]
public async Task<ActionResult> DeleteConfirmed(int id)
{
News news = await _db.News.FindAsync(id);
if (news != null) _db.News.Remove(news);
await _db.SaveChangesAsync();
return RedirectToAction("Index");
}
فرمی که POST هست از ValidateAntiForgeryToken استفاده میکنه و از حملات XSS جلوگیری میکنه .
در مرحله بعدی ، کاربر نهایتا کاری که میتونه با ID انجام بده ، دیدن اطلاعات یک رکورد هست که این هم بستگی به Authorization که شما برای اکشن هاتون قرار دادید داره .
شما وقتی اکشن Delete رو براش Authorize قرار میدید ، فقط به کاربر مورد نظر ( مدیر ) امکان حذف میدید و کاربران دیگه از این ID هیچ استفاده دیگه نمیتونن بکنن .
برچسب:
نویسنده: محمد رضا جوادیان