2012-01-22 2 views
0

У меня есть действие GET для создания записей. Поскольку страница несколько динамическая, я не использую модель для хранения данных. Я ухожу, чтобы сделать OAuth, только чтобы вернуться к экрану создания позже. Чтобы передать данные обратно, я перенаправляю строку запроса. Я разбираю строку запроса в действии GET, а затем показываю представление. Дело в том, что строка запроса отображается в браузере. Это отображает псевдочувствительные данные.Скрыть параметры строки запроса

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

В противном случае, есть ли способ перейти к другому действию без перенаправления? Я обнаружил, что если я вызову «другой» метод действия напрямую, он попытается найти представление об исходном действии. Я могу явно изменить линию return View(viewModel) на return View("create", viewModel), но это кажется действительно грязным.

ответ

2

Вам следует рассмотреть возможность изменения действия для приема запросов POST. По крайней мере, это предотвратит появление конфиденциальной информации в браузере. Для дополнительной безопасности ваш сайт должен обслуживаться через SSL.

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

+0

Я не могу перенаправить на POST. Когда процесс OAuth возвращается, он всегда использует GET. Кажется, что нет способа перенаправления через POST. Я имею в виду, что я мог бы создать веб-запрос внутри ... но это кажется слишком сложным. –

0

Похоже, ваш метод действий пытается сделать слишком много. Аутентификация/авторизация - это отдельная проблема, которая не должна быть частью метода действия. Лучше переместить проверку подлинности в фильтр действий.

Создайте класс, который расширяет атрибут авторизации и переопределяет его метод OnAuthorization для выполнения вашей авторизации.

Это освобождает ваш метод действия контроллера, чтобы принимать запросы POST.

+0

OAuth - это веб-стандарт, позволяющий пользователям предоставлять доступ к своей информации другим сайтам. Таким образом, я могу получить данные Google Analytics пользователя, данные Twitter или данные Facebook. В моем случае я запрашиваю что-то, называемое токеном обновления, чтобы я мог в любой момент захватить данные на сервере. Пользователь действительно не аутентифицируется в моей системе - они просто предоставляют мне доступ к их данным. –

+0

Разве это не отдельная проблема с действительным действием контроллера? Похоже, вам нужен этот токен, прежде чем вы продолжите свое действие. Если атрибут авторизации не соответствует вашим потребностям, вы все равно можете реализовать IActionFilter для выполнения этих действий. – chandmk

+0

Пользователь уже вошёл в систему. Они не пытаются получить доступ к моей системе, я пытаюсь получить доступ к их данным. –