Я отправляю токены через POST-запрос, но когда я вижу их на сервере, они не совпадают с тем, что было отправлено.
"U2FsdGVkX1+pxBHFdSU4NiSIOdR2GCCBr/WF7AOSF5zQjRqjSoTeOKR0Dzwm\nNT+g\n"
‹-- Оригинал "U2FsdGVkX1+pxBHFdSU4NiSIOdR2GCCBr/WF7AOSF5zQjRqjSoTeOKR0Dzwm\\nNT+g\\n"
‹-- Результат
Обратите внимание, что \n был заменен на \\n. Когда я выполняю проверку поиска токена, конечно же, ничего не найдено, потому что строка, которую я ищу, больше не является правильной строкой!
Я не уверен, почему эта строка автоматически изменяется или как это исправить. Я просто получаю доступ к этому через стандартные параметры.
token.verify(params["token"])
РЕДАКТИРОВАТЬ для большей ясности
Я просматриваю это с терминала, используя гем отладчика. У меня включена автооценка и отображается с params["token"]
без p или puts. Я не пытаюсь создавать символы новой строки с помощью \n. Литерал \n
— это фактическая часть строки, полученной в сообщении. Я случайным образом генерирую токен, используя библиотеку хеширования и шифрования, и строки иногда заканчиваются этими символами. Если я запускаю token.verify(params["token"])
из терминала отладчика, я получаю nil из базы данных, поскольку совпадения нет из-за добавления в строку дополнительных символов обратной косой черты.
Если я запускаю token.verify("U2FsdGVkX1+pxBHFdSU4NiSIOdR2GCCBr/WF7AOSF5zQjRqjSoTeOKR0Dzwm\nNT+g\n")
напрямую из терминала отладчика, я получаю правильную запись из базы данных. Это заставляет меня думать, что либо Рэк, либо Синатра автоматически избегают «специальных» символов в строке, прежде чем я смогу даже коснуться ее.
post
? - person fmendez   schedule 09.02.2014curl --data "token=U2FsdGVkX1+pxBHFdSU4NiSIOdR2GCCBr/WF7AOSF5zQjRqjSoTeOKR0Dzwm\nNT+g\n" http://localhost:4567/auth/verify_token
- person bigtunacan   schedule 09.02.2014p params["token"]
, тогда Ruby будет избегать\
, удваивая их при отображении строки, но «настоящая» строка будет состоять только из одиночных символов. Также обратите внимание, что curl будет отправлять\n
как литералы, не как символ новой строки, поэтому вам может потребоваться изменить способ использования curl (неясно, имеете ли вы в виду отправку новых строк или литерал\n
). - person matt   schedule 10.02.2014