1

我陷入了这样一种情况,即我想避免用户通过在浏览器中输入 URL 来导航到视图。但是可以在单击其操作导航到该视图的按钮时导航到该视图。

例如:我有一个指向ActionResult(Create)的 href 链接。我希望用户在单击该链接时导航到此视图(Create),但当它在浏览器中输入 URL(如(/Create) 时不导航到该链接时)

我在这个门户网站上找到了一些解决方案,例如:

1) 将 ActionResult 设为私有 - 但这会导致Http:404 Page not found 错误,方法是在浏览器中输入 URL 并单击导航到 Create ActionResult 的链接。

引用的链接:如果直接请求,我是否可以阻止某些 PartialViews 被提供?2)在 ActionResult 方法上 使用 DataAnnotaion [ChildActionOnly] 。但这也没有给我想要的结果,它也给了我一个错误。同样的错误 HTTP:404

3)我尝试使用ControllerContext.IsChildAction但它总是返回值 false 是否我在链接单击或输入 URL 时导航到此 ActionResult 所以我无法判断该怎么做。如果它在一种情况下返回 true 或在其他情况下返回 false 我会解决无论如何重定向我的问题。

Asp.net mvc 如何防止浏览器调用action方法?

帮帮我伙计们..

4

1 回答 1

2

鉴于问题下评论中的信息,您几乎肯定不想使用 Request.UrlReferrer,因为此值可能会被轻易欺骗,因此不应用于任何安全目的。

您几乎肯定希望查看授权过滤器(特别是您可以使用AuthorizeAttribute作为起点)以防止未经授权的客户端调用操作方法。

于 2013-11-07T12:31:54.350 回答