2014-02-02 5 views
0

Я использую MVC4, я знаю, что мы можем использовать ValidateAntiForgeryToken в методе Form with Post. Я хочу знать, можно ли использовать ValidateAntiForgeryToken в гиперссылке ????ValidateAntiForgeryToken with Hperlink

Для проблемы с безопасностью, я хочу убедиться, что страница идет со страницы 1 на страницу 2, поэтому я хочу подтвердить ссылку гиперссылки.

Если да, то как мы можем это сделать?

ответ

1

Я не уверен, что ValidateAntiForgeryToken - это то, что вы ищете. Реализация MVC создает токен и сохраняет его в сеансе. Этот токен действителен для пользователя в течение всего времени сеанса, и он не предназначен для использования в форме по форме.

Что вы, вероятно, захотите сделать, это создать этот токен самостоятельно. Когда вы создаете страницу 1, создайте токен и сохраните его в сеансе. Вы можете использовать привязку и добавить токен в ссылку. Таким образом, вы можете использовать get. Страница 2 может проверить токен, а затем удалить его из сеанса.

Пожалуйста, помните, что если вы помещаете что-либо в переменные get, вы рискуете, что кто-то заметит эту страницу (с переменной GET).

В качестве альтернативы вы можете использовать POST и иметь вызов анкера на javascript для завершения вызова. Это, конечно, не работает в браузерах, которые не поддерживают JS.

0

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

public ActionResult PageOne() 
    { 
     TempData["FromPageOne"] = true; 
     return View(); 
    } 

    public ActionResult PageTwo() 
    { 
     //values in TempData are only accessible once 
     //so user must always come from PageOne 
     if ((bool?)TempData["FromPageOne"] == true) 
     { 
      //From page one! 
     } 
     else 
     { 
      //Came directly, from another URL, or was refreshed (F5) 
     } 
     return View(); 
    } 
Смежные вопросы