One of the cool things about using the MVC Framework is that you get clean RESTful urls e.g. /Product/Edit/1 This is all well and good but when developing a multi-tenant application which uses a Shared datastore it is extremely important that your controller actions are secure in the sense that the Urls can’t be tampered with. Believe it or not but this level of security is often neglected in a lot of projects or is at the least an afterthought. You could implement in every controller action something like below: public ActionResult Edit( int id) { if (!catalogService.HasAccessToProduct(UserContext.UserId, id)) { HttpContext.Response.Status = "401 Unauthorized" ; HttpContext.Response.StatusCode = 401; Response.End(); } var product = catalogService.GetProductById(id); ViewData.Model = product; return View(); } However ...