asp.net-mvc - 将隐藏数据从 View 安全地传递到 Controller

标签 asp.net-mvc model-view-controller viewbag

在我的应用程序中,用户可以在他们之间转移积分。在我看来,我检查用户是否可以从他的帐户转移积分,如果可以,我会渲染一些允许他这样做的东西。我不想在我的 Controller 中再次检查这一点,所以我需要某种机制,它允许我检查我为其呈现 View 页面的用户是否与向我的 Controller 发送请求的用户相同。

所以基本上,我想检查我的 Controller ,当前登录的用户是否与发送请求的用户相同 - 为此,我认为我需要一些类似于 ViewBag 的东西,但不是来自 Controller 到 View ,而是从 View 到 Controller 。这可能吗?

最佳答案

执行此操作的正确方法不是在用户请求之间传输此类信息。每个请求都应该是无状态的,但你试图嵌入一个状态。这是搬起石头砸自己脚的公平做法。

如果您的操作需要身份验证(您就是您所说的那样),您应该使用标准的经典 ASP 网络方式来执行此操作。这会将标准身份验证 token 嵌入到任何进一步的用户请求中。这样您就可以知道用户是否已通过身份验证。

对于某些需要授权的操作(用户有权执行操作),您必须验证用户是否有权执行此类操作。必须对每个请求执行此操作,并且通常是一个快速操作。无需通过减少安全屏障来优化此处的内容。

如果您使用经典 asp 搜索身份验证和授权,您将获得有关如何进行编码的更细粒度的答案。


我不推荐,但您仍然可以嵌入隐藏信息

<input type="hidden" value="..."/>

关于asp.net-mvc - 将隐藏数据从 View 安全地传递到 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12028555/

相关文章:

php - 在 PHP 中为 MVC Controller 合并 INSERT Mysql 查询

javascript - 将使用 $.get() 呈现的部分 View 中的任何数据传递到 ContentPage

mysql - 连接字符串错误。无法找到请求的 .Net Framework 数据提供程序

javascript - MVC3::从详细信息 View 中导航表,而不是单击表中的详细信息链接

java - MVC 框架中的日志记录应该发生在哪里?

java - 在基于表单的身份验证中设置 UserPrincipal

c# - ASP.NET 在引号内使用 ViewBag

asp.net-mvc-3 - ASP.NET MVC 3 模型绑定(bind) - ViewBag.Title 与 id ="Title"的输入冲突

asp.net-mvc - 如何将 IStringLocalizer 注入(inject) IApplicationModelConvention?

jquery - 在 MVC 中只允许单击一次按钮