asp.net-mvc - MVC - 将变量存储到下一个请求

标签 asp.net-mvc var httpcontext viewbag

我有一个接收两个参数(int?,string)的方法。我的 Controller 中的操作必须保存此变量并以表单返回 View 。从客户端返回表单后,我需要先前请求中的这些变量。我可以将它们传递给 ViewBag 进行查看,并将其添加到隐藏的表单中,但这非常危险,任何人都可以在浏览器中更改它。有什么想法吗?

我认为这个问题没有意义。 如果我有使用 HTTP GET 方法接收两个参数的方法,那么用户在 get 方法或表单中更改这两个变量没有区别。 如果我将它存储在服务器端,他可以在将参数传递给第一个方法时更改,并且服务器将存储错误的变量。
例如:
http://www.someurl.com/Controller/Action/?id=123&key=someKey
我可以通过编辑网址来更改参数,因此荒谬地将其存储为服务器端的变量,以确保用户不会通过编辑隐藏字段来更改它。此外,我可以检查 key 是否与数据库中具有该 ID 的 key 相同。

最佳答案

Session time is 20 or 30 minutes. User can open this form and submit it when the time of session is out. Users don't like exceptions

允许表单在一定时间后过期是相当标准的。您可以使 session 永远保持打开状态,因为这是一个安全漏洞。

至于实际值,您可以在处理完第二个页面后立即将其从 session 中删除。如果在点击第二个页面时该值不存在,只需再次重定向到第一个页面并显示一条消息,说明花费的时间太长。

您的第二个选择是使用专为在两个页面之间存储值而设计的TempData。用户无法访问 TempData

第三个选项当然是将值存储在数据库中(在登录之间等之间根据需要保留它)

关于asp.net-mvc - MVC - 将变量存储到下一个请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31912228/

相关文章:

c# - 部分 View '/Views/Shared/... 未找到或没有 View 引擎支持搜索的位置

javascript - 无法通过 setTimeout 调用函数

file - 可以将所有 JS/jQuery 变量放在文件顶部吗?全局变量?

c# - 从单独的控制台应用程序访问 HttpContext.Current.Application

c# - 这两个 HttpContext.Current.Session 和 Session 有什么区别 - asp.net 4.0

asp.net-mvc - 如何使用 Rhino Mocks 模拟 HttpContext.Application

asp.net-mvc - 对 2 个字段进行 asp.net mvc 验证 - 如果输入其他字段,则必须存在一个

ASP.NET MVC 3、Entity Framework 4。更新与许多相关的实体

asp.net-mvc - 使用输出缓存和其他操作过滤器

swift - : and = 之间的差异