Изначально я использовал обычную http-аутентификацию для аутентификации пользователя с помощью устройства, следуя этому руководству:
http://jessehowarth.com/2011/04/27/ajax-login-with-devise
Мне удалось успешно аутентифицировать пользователя, но сеанс оставался в системе навсегда. Не было никакого способа уничтожить сеанс пользователя. На самом деле, когда я добавил user_signed_in? Метод разработки в моем методе создания, он всегда будет возвращать true, даже если выход из системы через JSON. Таким образом, я пришел к выводу, что нет способа завершить сеанс с использованием обычной http-аутентификации. Все, что вы действительно можете сделать, это проверить, выполнил ли пользователь вход, и отправить код состояния в виде json обратно клиенту.
Итак, я попробовал маршрут токена аутентификации, который позволил вам создать сеанс с токеном аутентификации, а затем уничтожить сеанс, удалив этот токен аутентификации, и пользователю пришлось бы снова войти в систему, чтобы получить доступ к страницам, которые требуют аутентификация, как показано в этом посте:
Разработка и аутентификация с помощью CURL!
Недостатком этого факта является то, что у вас есть очень длинная строка, которую вы должны ввести для каждой страницы, требующей аутентификации, что кажется немного нежелательным. Хотелось бы, чтобы здесь было лучшее из обоих миров, где вы можете входить и выходить, как в веб-браузере.
Я не уверен, что все, что я говорю, верно, но, похоже, соответствует этому посту:
http аутентификация в devise и rails 3
В этом посте он говорит, что токен аутентификации "более безопасен, чем обычная аутентификация http, так как срок действия ключа может истечь". Я предполагаю, что он имеет в виду, что как только вы вошли в систему, используя обычную аутентификацию, тогда все, вы вошли в систему навсегда, тогда как токен аутентификации вы можете истечь и заставить пользователя снова войти в систему. Это точная интерпретация?
Спасибо за ответ