Скрыть параметры маршрутизации URL в asp.net mvc - PullRequest
2 голосов
/ 19 января 2012

Есть ли способ для конкретного сокрытия параметров маршрутизации в ASP.NET MVC от пользователей. В частности, я бы хотел ссылку

http://sitename.com/Do?title = 2 просто стать http://sitename.com/Do

но внутренне передайте titleId моему контроллеру.

Это можно?

Спасибо

Обновление: да, на моей веб-странице есть кнопки, такие как href, но я бы предпочел скрыть все параметры, чтобы пользователи не переходили на другие части страницы напрямую, используя разные параметры. @ Моше, нет, это не отправка или публикация, иначе я бы использовал строго типизированное представление. Спасибо

Ответы [ 2 ]

2 голосов
/ 20 января 2012

Пока ваши параметры находятся на клиенте, они никогда не будут скрыты, если вы не зашифруете их.Вы можете сохранить параметр в скрытом поле и установить метод действия для публикации, тогда значение не будет отображаться в URL.Но пользователь с небольшим знанием веб-страницы может по-прежнему манипулировать скрытым полем (если только вы не шифруете значение каким-либо способом).

РЕДАКТИРОВАТЬ: если это необходимо сохранить, вы должны проверить учетные данные пользователя насервер.В противном случае вы можете скрыть данные, как в другом примере, или использовать шифрование, например, с ProtectData.Protect (...).

0 голосов
/ 20 января 2012

Для простых числовых значений, которые нужно передавать взад и вперед в представление, вы можете написать два приватных метода в вашем контроллере:

private int Obscure(int source) {
    return (source*source) * 3; //or something clever you come up with
}

private int DeObscure(int obscuredValue) {
    return (int)Math.Sqrt(obscuredValue / 3); //inverse the Obscure method
}

Вы можете использовать их, чтобы скрыть значения, прежде чем передать их впросматривать и скрывать их после отправки обратно.Имейте в виду, что это действительно не очень хороший способ реализации безопасности, как объясняется в этом сообщении о стеке .

Другой вариант - создать процедуру Obscure / DeObscure, которая принимает всю строку запросаи каким-то образом калечит туда и обратно.Это потребовало бы написания пользовательского ViewEngine, хотя.Звучит интересно ...

...