如何防止编辑url地址?

时间:2015-01-21 23:41:32

标签: c# asp.net asp.net-mvc-4 url fullcalendar

我是初学程序员,我需要一些信息。如何通过浏览器栏阻止编辑参数?看看代码。在我的控制器中,我有下面的方法。

[HttpGet]
public ActionResult WypelnijFormularz(int doctor, string date, string hour, string minute)
{
    RegisterVisitModel model = new RegisterVisitModel();
    model.doctor = DoctorRepository.GetDoctorByID(doctor);
    model.dateVisit = DateTime.ParseExact(date+" "+hour+":"+minute+":00", "yyyy-MM-dd HH:mm:ss", null);

    return View(model);
}

从这里发出参数:

button.url = "/Dentist/WypelnijFormularz?doctor=" + doctor + "&date=" + button.start.Date.ToString("d") + "&hour=" + button.start.ToString("HH") + "&minute=" + button.start.ToString("mm");

上面的代码是具有Fullcalendar的众多属性之一。是的,我使用Fullcalendar插件来显示本周的活动!(它是一个日历小时!)。选择免费术语后,我们将针对上述方法。问题的核心是我们可以在浏览器中更改日期,然后我们可以预订现有的约会。我怎么能阻止这个?

我找到了我们无法做到的网站 - > https://www.osoz.pl/osoz-www/lekarze/potwierdzenieRejestracji?ntrz=4295&nswd=901870&data=2015-01-23&czasOd=10:50&czasDo=11:00&platnik=0&charakterPracy=OSOZ&isGWR=false&kre8=0010&nrjd=1&s=2503261200 当您更改日期时,我们知道此页面不存在。我怎么能得到这个。

问候!

2 个答案:

答案 0 :(得分:0)

您无法指示浏览器或可用于发送请求以验证网址的任何其他工具。

您需要做的是验证自己进入操作方法的所有输入。您可以使用data annotation attributes验证传入请求或自行执行验证。

您绝不应该信任用户输入的内容。

答案 1 :(得分:0)

正如其他人所推荐的那样,你应该这样做:

[HttpGet]
public ActionResult WypelnijFormularz(int doctor, string date, string hour, string minute)
{
     RegisterVisitModel model = new RegisterVisitModel();
     model.doctor = DoctorRepository.GetDoctorByID(doctor);
     model.dateVisit = DateTime.ParseExact(date+" "+hour+":"+minute+":00", "yyyy-MM-dd HH:mm:ss", null);

     //Check if an appointment exists on that day
     if(DoctorRepository.IsAppointmentExist(model.dateVisit))
     {
           //Redirect to error page
           return RedirectToAction("Index", "Error");
     }

     return View(model);
}