Asp.net mvc 如何在MVC3/C#/Razor中为FormMethod.Get生成的URL添加值?

Asp.net mvc 如何在MVC3/C#/Razor中为FormMethod.Get生成的URL添加值?,asp.net-mvc,asp.net-mvc-3,asp.net-mvc-4,razor,Asp.net Mvc,Asp.net Mvc 3,Asp.net Mvc 4,Razor,我将哈希URLToken添加到我的URL以停止篡改 这是操作的扩展方法: public static string ActionHashed(this UrlHelper urlHelper, string actionName, object routeValues) { bool generateToken = mIsSecureLinks; RouteValueDictionary rvd = new RouteValueDictionar

我将哈希URLToken添加到我的URL以停止篡改

这是操作的扩展方法:

    public static string ActionHashed(this UrlHelper urlHelper, string actionName, object routeValues)
    {
        bool generateToken = mIsSecureLinks;

        RouteValueDictionary rvd = new RouteValueDictionary(routeValues);
        if (generateToken)
        {
            string token = TokenUtility.generateUrlToken("", actionName, rvd, tokenPassword);
            rvd.Add("urltoken", token);
        }
        string scheme = urlHelper.RequestContext.HttpContext.Request.Url.Scheme;
        return urlHelper.Action(actionName, null, rvd, scheme, null);
    }
那么,我如何将此哈希添加到FormMethod.Get生成的URL

非常感谢

EDIT1

回应克里斯的评论:

我将检查一下“Html.AntiForgeryToken()”等,它看起来是对我的方法的补充,因为它保护表单帖子,而我的方法侧重于GET

我的一个问题是阻止用户使用Report/List/{id}这样的URL,其中id=CustomerId,由于这是一个多用户系统,我不希望人们四处玩,看看他们是否可以列出他们无权查看的客户端的报告。允许他们查询授权查看的内容的所有功能都包含在onpage超链接等中。有人可能会认为作为主键的GUID比作为不那么吸引人的整数更好。此外,此解决方案的另一个方面是,“受保护”链接在vurrent浏览器上下文中不起作用。显然,有一些链接需要处理,而这些链接只是不受保护(操作时没有属性)

任何想法都值得赞赏


一直在努力学习。

只需添加为route param?我将其添加到动作参数列表中,效果良好。谢谢希望你喜欢足球:)你还需要一个隐藏字段,格式为ie@Html.hidden(“urltoken”,“djdjdj”),既然MVC已经有了处理这个问题的内置方法,你为什么还要尝试重新创建CSRF?只需使用
Html.AntiForgeryToken()
[ValidateAntiforgeryToken]
组合即可。这实际上只适用于POST和其他原子HTTP方法,但无论如何,这就是您所需要的。通过非原子HTTP方法(如GET)的请求应该是可重放的。Chris,谢谢。我已经发布了一个EDIT1,因为它太长了,作为对你富有洞察力的评论的回应。