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

时间:2014-06-09 15:15:18

标签: asp.net-mvc asp.net-mvc-3 asp.net-mvc-4 razor

我在网址中添加了Hashed urltokens以停止篡改。

这是Action的扩展方法:

    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

回应Chris的评论:

我会检查“Html.AntiForgeryToken()”等。看起来是我的方法的补充,因为它保护表格POST,我的方法专注于GET。

我的一个问题是阻止用户使用诸​​如报告/列表/ {id}之类的网址,其中id = CustomerId,因为这是一个多用户系统,我不想让人们四处游戏,看看他们是否可以列出报告对于他们无权查看的客户。允许他们查询他们有权查看的内容的所有功能都在页面超链接等内。有人可能认为GUID作为主键比整数更好,因为邀请较少。此解决方案的另一个方面是“受保护”链接不会在当前浏览器上下文之外工作。显然,有一些人需要工作的链接,而一个人只是保留这些无保护的链接(没有动作属性)。

任何想法都赞赏。

一直在努力学习。

0 个答案:

没有答案