Как НЕ передать параметр по URL? - PullRequest
2 голосов
/ 05 октября 2010

Сначала извините за мой плохой английский, я француз. Я постараюсь, чтобы я понял:)

Я бы хотел передать параметр из представления в контроллер без , используя URL.

Параметр является идентификатором пользователя, и я не хочу, чтобы кто-либо изменял его вручную в URL.


Мой код:

  <% foreach (var item in ViewData["ClientsList"] as List<SalesCoverseal_V2.Models.Customer>)
           { %>
        <tr>
            <td>
                <%: Html.ActionLink("Editer", "ClientEdit", new { id=item.PersonId }) %>

          <%: Html.ActionLink("Faire une offre", "Index", new { controller
= "Offer", id=item.PersonId }) %>

В контроллере:

 public ActionResult Index(string id)
        {
            if (currentLoginUser != null)
            {                
                CurrentCustomer = WebService.GetClientInfos(id);
                SessionManager.CurrentCustomer = CurrentCustomer;

                OfferViewModel viewmodel = new OfferViewModel();

                return View(viewmodel);

            }


My url : 

> http://localhost:50905/Offer/Index/WS00000401

But I don't want this url, I want 

> http://localhost:50905/Offer/

Вы можете мне помочь? Спасибо

Ответы [ 3 ]

3 голосов
/ 05 октября 2010

Если вы не хотите передавать идентификатор в URL-адресе, вам нужно «опубликовать» запрос, т.е. отправить форму.
Вы можете сделать это, поместив идентификатор в скрытое поле. Вы должны знать, что это само по себе не является доказательством подделки.
Если вы хотите убедиться, что ваш идентификатор пользователя не был подделан, вам придется зашифровать его перед отправкой клиенту, а затем расшифровать, когда он будет возвращен таким образом, что вы сможете проверить, был ли он изменен. в любом случае. Кроме того, вы можете пометить свой метод Action как принимающий только запросы Post, чтобы никто не пытался получить к нему доступ с помощью запроса Get.

1 голос
/ 05 октября 2010

Использование POST вместо GET на самом деле не поможет решить вашу проблему, потому что любой может подделать POST почти так же легко, как GET.

Я бы посоветовал вам проверить серверную часть, если пользовательимеет разрешение на просмотр данных или нет.

Что именно вы пытаетесь сделать?Вы можете использовать HMAC .

HTH,
Charles

1 голос
/ 05 октября 2010

Если это часть идентификационной информации текущего пользователя, то какой-то cookie-файл может показаться нормальным подходом, но использование cookie-файлов будет тривиальным, если вы не сделаете их содержимое либо криптографически подписанным значением, либо непрозрачным непредсказуемым поиском какое-то значение. В любом случае вы также захотите установить ограничение по времени для предотвращения повторного воспроизведения.

Если вам просто не нужны данные в URL, может помочь POST, но вы не можете перенаправить на POST.

...