Скрыть QueryString MVC3 -ASP.NET - PullRequest
1 голос
/ 20 июня 2011

Я храню Vaues в RouteData, как показано ниже.

new RouteValueDictionary(new { Controller = "Absence", Action = "AmendAbsence", Id = PersonGuidSelected })

Я получаю значение из RouteData, используя следующие значения RouteData.Values["id"].ToString()

это хорошо,Но значения видны в URL.Я не хочу, чтобы значения отображались в URL.

Как я могу это сделать?

Кто-нибудь делал это раньше?

Ответы [ 2 ]

3 голосов
/ 20 июня 2011

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

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

Вариант № 3 является наименее масштабируемым, то есть сохраняет его в состоянии сеанса на сервере ASP.NET или на сервере состояний. Любой сервер не должен быть уязвимым, и поэтому здесь нет необходимости использовать шифрование. Но если ваш сервер работает медленно и / или у вас много посетителей, это может замедлить работу компьютера. Опять же, посетители не могут добавить URL в закладки, потому что параметры там не хранятся.

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

2 голосов
/ 20 июня 2011

Если это конфиденциальные данные, есть несколько возможностей:

  • Сохраните его в сеансе на сервере.
  • Сохраните его в зашифрованном файле cookie на клиенте. Вы можете использовать часть userData билета FormsAuthentication, если вы используете аутентификацию форм. Таким образом, он будет отправлен по каждому запросу. Но если это действительно очень важные данные, их лучше хранить на сервере. Затем используйте аутентифицированное имя пользователя для извлечения этих данных, где бы они ни хранились на сервере.

Если он не чувствителен, вы можете использовать POST вместо GET, чтобы типичный пользователь не увидел его в URL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...