Asp.net mvc MVC如何隐藏链接';安全性的Html属性

Asp.net mvc MVC如何隐藏链接';安全性的Html属性,asp.net-mvc,asp.net-mvc-3,asp.net-mvc-4,Asp.net Mvc,Asp.net Mvc 3,Asp.net Mvc 4,我将模型值(Id)动作传递给如下动作: http://localhost:9151/Controller/Save?Id=180 控制器部分: return RedirectToAction("SaveAction", "MyController", new { MyId= model.Id}); 视图部分: @Html.HiddenFor(model => model.Id) 另一个视图示例: @Html.ActionLink(“删除”,“删除”,新的{MyId=Model

我将模型值(Id)动作传递给如下动作:

http://localhost:9151/Controller/Save?Id=180
控制器部分:

 return RedirectToAction("SaveAction", "MyController", new { MyId= model.Id});
视图部分:

   @Html.HiddenFor(model => model.Id)
另一个视图示例:

@Html.ActionLink(“删除”,“删除”,新的{MyId=Model[i].Id, AnotherId=Model[i].AnotherId})

在链接栏上显示如下:

http://localhost:9151/Controller/Save?Id=180
当我将“180”更改为“181”时,用户可以看到Id=181的所有值相关视图。这对我来说是一个重要的安全问题,用户无法访问其他Id值,如181、182、183等

如何将Id值安全地传递给各个操作,以及如何在浏览器的链接栏中不显示Id值

有没有一个简单的方法可以做到这一点


您是否尝试在mvc中使用route provider?您需要处理控制器中的安全性,而不是get-use Post。用户仍然可以在地址栏中键入
/Controller/Save?Id=181
。@DavidG无论如何,用户仍然可以更改URL。关键是他们应该授权访问该URL的请求结果中显示的数据。@DavidG如果您失去了我,您可以在MVC中创建自定义授权属性,以根据应用程序中的用户和角色进行验证,这就是我说的原因“让具有特定角色的用户或拥有其有权访问的特定项目”如果用户无权访问其刚键入的URL,则应处理错误并将其重定向到错误控制器或类似的内容,以显示未授权消息