隐藏@ Url.Action中的参数

时间:2015-03-30 19:12:11

标签: c# asp.net

我有这段代码

<a href="@Url.Action(" Edicao ", "EdicaoListaVerificacao ", new { idFormulario = m.Id })" title="Editar" class="glyphicon glyphicon-pencil" aria-hidden="true" />

编辑&#39;是我的行动和&#39; FunctionEdit&#39;是我的控制器。我的动作需要一个参数,我通过它构建一个&#39;实例&#39;。物业需要如何。问题是URL可以被更改,用户可以访问他们无法访问的内容。

2 个答案:

答案 0 :(得分:7)

您永远不能隐藏您的网址 - 您也不应该。相反,您应该在Edicao操作方法中验证用户是否有权使用指定的 Id 查看 Formulario

在所有Web应用程序中,您必须假设用户尝试检索的URL绝对是任何东西 - 并且某些用户将尝试编辑URL以获取隐藏内容。 ASP.NET具有您应该使用的内置身份验证和授权机制。

如果您只是想找一种简单的方法来制作一个无法猜测的网址,而不强迫用户登录,那么您必须使用比数字ID,如GUID。

如果您在任何时候受到自己的解决方案的诱惑,例如URL引荐来检查或验证Cookie,请记住,更容易使用的解决方案很可能已经内置到ASP.NET中。

答案 1 :(得分:-6)

就是这样!感谢你们。我找到了一种方法来实施检查我的行动。使用 Request.UrlReferrer

 public ActionResult Edicao(int idFormulario)
        {
            Uri url = Request.UrlReferrer;

            if (url != null)
            {

               DO ALL THINGS YOU HAVE TO

            }
            else
            {
                RETURN TO INDEX
            }

        }

Request.UrlReferrer 如果来自我的请求,则返回URL。如果不是,则返回 null 。比我只是构建一个 if block ;)。谢谢你们!