1

我知道视图状态在 mvc 中不存在。我正在寻找类似于 asp.net 网络表单中的加密视图状态模式的东西。我想在请求中隐藏一些数据。

我想要实现的是将一些数据传递给响应并将其隐藏在用户面前。我不知道用户能够修改数据或查看它。通过将这些数据隐藏在客户端,我想减少服务调用,因为我不能使用会话来保留这些数据。

数据根本不会显示。我只需要稍后将其传递给服务即可。

4

3 回答 3

1

所以我找到了我的问题的答案。有MVC3Futures 项目添加了所需的行为。

可以序列化实体模型并对其进行加密。

@Html.Serialize("Transfer", Model, SerializationMode.EncryptedAndSigned)

通过放置反序列化属性来自动绑定控制器。

public ActionResult Transfer(string id,[Deserialize(SerializationMode.EncryptedAndSigned)]Transfer transfer)
于 2013-03-20T06:30:45.763 回答
1

您只需要在将值放入隐藏的输入字段之前对其进行加密,然后在发布时在服务器上对其进行解密。

查看如何在 C# 中进行简单的加密/解密。这里有一些很好的实现:

http://www.joshrharrison.com/archive/2009/01/28/c-encryption.aspx

https://stackoverflow.com/a/5518092/160823

于 2013-03-15T16:34:33.810 回答
0
  1. 虽然我真的不知道你在加密什么。但是如果你想避免 CSRF 或数据篡改,那就去吧。

您可以AntiForgeryToken()用于再次验证被篡改的数据。防伪令牌可用于帮助保护您的应用程序免受跨站点请求伪造。要使用此功能,请从表单调用 AntiForgeryToken 方法,并将 ValidateAntiForgeryTokenAttribute 特性添加到要保护的操作方法中。

考虑像这样使用 AntiForgeryToken

@Html.AntiForgeryToken()

在控制器中

[ValidateAntiForgeryToken]
Public ActionResult SomeAction()
{
  return view()
}
于 2013-03-15T12:44:25.640 回答