Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 如何限制在.NETMVC中手动输入URL?_Jquery_Html_Asp.net Mvc - Fatal编程技术网

Jquery 如何限制在.NETMVC中手动输入URL?

Jquery 如何限制在.NETMVC中手动输入URL?,jquery,html,asp.net-mvc,Jquery,Html,Asp.net Mvc,为了进一步澄清我的标题: 我似乎找不到任何关于如何限制对某个页面的访问的信息,只允许通过点击按钮进行访问 示例情况: 我有一个特定的URL:localhost:49423/Projects/Details/10-如果用户手动将其键入地址栏,它应该重定向到localhost:49423/Projects。除非通过我的用户界面正确访问,否则我希望特别标识的页面(如Projects/Details/10)无法访问 我觉得这可能是不可能的。这是真的吗?是否有一种解决方案需要某种类型的按钮单击或链接单击来

为了进一步澄清我的标题:

我似乎找不到任何关于如何限制对某个页面的访问的信息,只允许通过点击按钮进行访问

示例情况:

我有一个特定的URL:localhost:49423/Projects/Details/10-如果用户手动将其键入地址栏,它应该重定向到localhost:49423/Projects。除非通过我的用户界面正确访问,否则我希望特别标识的页面(如Projects/Details/10)无法访问

我觉得这可能是不可能的。这是真的吗?是否有一种解决方案需要某种类型的按钮单击或链接单击来访问页面,并且每当用户访问URL时,它都会验证是否已执行按钮/链接单击操作?

您可以使用
当用户单击某个按钮时,您可以发布页面并设置TempData并重定向到所需页面

在获取所需页面的请求时,您可以检查TempData是否存在。如果有,您可以允许用户查看该页面,如果没有,您可以重定向到您的项目页面。

简短的回答是您不能。您可以添加一个额外的查询字符串值,以指示它是通过单击按钮调用的,但用户可以快速计算出该值并将该值键入地址栏。你认为你为什么要这样做?不清楚你为什么要这样做。如果您需要确保用户首先登录,您应该使用on-your-action方法来防止未经授权的访问。是的,这是一个更安全的问题,我想限制用户只在URL中键入项目id并开始查看不应该的项目的能力。我在其他地方有足够的逻辑只呈现某个用户应该看到的内容(他的项目、与他共享的项目、公共项目),并且所有的[授权]属性都已设置。也许有更好的方法来建立这种安全措施,但这似乎没有那么骇人,尽管我对所有这些都是新手。卡普兰的解决方案奏效了你是认真的吗?尝试一下,然后刷新浏览器(这将破坏您在
TempData
中的价值)-使用
TempData
(甚至是
会话
)是毫无意义的。在GET方法中测试参数的值,如果用户没有访问该参数的权限,则抛出并出错或重定向。@StephenMuecke为什么使用TempData没有意义?他只想通过按钮进入页面。如果他刷新页面,TempData将被销毁,他将无法访问该页面。他只能通过设置TempData的按钮访问页面。