Сделать URL доступным только из приложения - PullRequest
0 голосов
/ 16 июня 2011

Скажем, у меня есть URL для редактирования сообщения ... / posts / 1 / edit

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

Возможно ли достичь чего-то подобного?

У меня нет системы аутентификации вприложение.

Я просто смотрю, есть ли элегантное решение для этого.Иначе я уверен, что смогу найти способ обойти.Спасибо.

Ответы [ 2 ]

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

Используйте request.referer, чтобы получить страницу, с которой идет пользователь. Это должно позволить вам достичь того, что вы хотите. Обратите внимание, что это не на 100% надежно, иногда заголовок referer может быть не установлен. Но в большинстве случаев это будет работать.

Кроме того, вы можете установить переменную сеанса, которая указывает, разрешено ли пользователю открывать страницу (или нет) (установите переменную сеанса на главной странице с помощью session[:allowed] = true, проверьте ее наличие на скрытой странице). Если у пользователя не установлена ​​переменная сеанса, выведите ошибку или перенаправьте на главную страницу (что-то вроде render :status=>403 and return unless session[:allowed]).

1 голос
/ 16 июня 2011

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

Конечно, чтобы сделать это намного проще, отправьте уникальный аргумент, например / posts / 1 / edit? Application = "not-browser-1234"

и на странице редактирования

if $ _GET [application]! = "Not-browser-1234" выход

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