我知道视图状态在 mvc 中不存在。我正在寻找类似于 asp.net 网络表单中的加密视图状态模式的东西。我想在请求中隐藏一些数据。
我想要实现的是将一些数据传递给响应并将其隐藏在用户面前。我不知道用户能够修改数据或查看它。通过将这些数据隐藏在客户端,我想减少服务调用,因为我不能使用会话来保留这些数据。
数据根本不会显示。我只需要稍后将其传递给服务即可。
我知道视图状态在 mvc 中不存在。我正在寻找类似于 asp.net 网络表单中的加密视图状态模式的东西。我想在请求中隐藏一些数据。
我想要实现的是将一些数据传递给响应并将其隐藏在用户面前。我不知道用户能够修改数据或查看它。通过将这些数据隐藏在客户端,我想减少服务调用,因为我不能使用会话来保留这些数据。
数据根本不会显示。我只需要稍后将其传递给服务即可。
所以我找到了我的问题的答案。有MVC3Futures 项目添加了所需的行为。
可以序列化实体模型并对其进行加密。
@Html.Serialize("Transfer", Model, SerializationMode.EncryptedAndSigned)
通过放置反序列化属性来自动绑定控制器。
public ActionResult Transfer(string id,[Deserialize(SerializationMode.EncryptedAndSigned)]Transfer transfer)
您只需要在将值放入隐藏的输入字段之前对其进行加密,然后在发布时在服务器上对其进行解密。
查看如何在 C# 中进行简单的加密/解密。这里有一些很好的实现:
http://www.joshrharrison.com/archive/2009/01/28/c-encryption.aspx
您可以AntiForgeryToken()
用于再次验证被篡改的数据。防伪令牌可用于帮助保护您的应用程序免受跨站点请求伪造。要使用此功能,请从表单调用 AntiForgeryToken 方法,并将 ValidateAntiForgeryTokenAttribute 特性添加到要保护的操作方法中。
考虑像这样使用 AntiForgeryToken
@Html.AntiForgeryToken()
在控制器中
[ValidateAntiForgeryToken]
Public ActionResult SomeAction()
{
return view()
}