Я ранее использовал переменную сеанса, то есть session[:user_id]
, чтобы отслеживать текущего пользователя, но теперь я пытаюсь подключить свое приложение к EmberJS, требуя использовать сервер Grape API вместо контроллеров и тому подобное. Мне было интересно, как лучше всего отслеживать учетные данные пользователей на разных страницах: Session, Cookie или Thread? На данный момент я склоняюсь к Thread, но мне было интересно, каковы плюсы и минусы каждого из них?Как лучше всего хранить учетные данные пользователя в Rails
ответ
Аутентификация в API немного отличается. Пользователь должен авторизоваться по каждому запросу, передавая некоторый тип токена, а не один раз за сеанс.
Обычно у вас будет маршрут, который принимает имя пользователя/пароль, который будет возвращать токен аутентификации, а затем токен будет передан как часть BasicAuth или в заголовках для каждого запроса. В Винограде есть несколько способов сделать это. Вы можете добавить помощника Authentication:
module ApiHelpers
module Authentication
def authenticate!
error!('401 Unauthorized', 401) unless current_user
end
def current_user
if token_from_headers
@current_user ||= User.find_by api_key: token_from_headers[1]
end
end
def authenticate!
error!('401 Unauthorized', 401) unless current_user
end
def token_from_headers
/Token token="(.+)"/.match(headers['Authorization'])
end
end
end
Include, что в главном апи файле:
class API < Grape::API
helpers ApiHelpers::Authentication
end
Тогда для каждого запроса, который нуждается в аутентификации:
resource :items do
get do
authenticate!
present current_user.items, with: Entities::Item
end
end
Вы также можете добавить настраиваемое промежуточное программное обеспечение для аутентификации или аутентификации с использованием базового auth. Дополнительная информация по этому поводу в README от Grape: https://github.com/intridea/grape#authentication
Я предполагаю, что ваша конечная точка использует SSL?
- 1. Как лучше хранить учетные данные в приложении GAE?
- 2. Какой метод лучше проверять учетные данные пользователя?
- 3. Испытательная кухня, хранить учетные данные
- 4. Как лучше всего хранить торговые часы
- 5. Хранить учетные данные WIFI
- 6. Как хранить учетные данные пользователя custome в asp.net mvc4?
- 7. Где лучше всего хранить логику компоновки в Rails?
- 8. Где лучше всего хранить глобалы в приложении Rails?
- 9. MySQL/Хранить учетные данные MySQL
- 10. Лучше всего хранить динамические данные и динамические вещи в android
- 11. Confused: как лучше всего использовать данные пользователя в мультиплеере?
- 12. Где лучше всего хранить данные о пользователях в asp.net?
- 13. Где лучше всего хранить конфигурационную информацию в приложении ASP.NET MVC?
- 14. Что лучше всего хранить имя пользователя и пароль на iPhone?
- 15. Как хранить учетные данные в надстройке Outlook
- 16. Как хранить учетные данные в amazon EC2?
- 17. Где хранить учетные данные пользователя в настольном приложении Python?
- 18. где хранить учетные данные пользователя в корпоративном приложении (EAI)?
- 19. Что лучше всего хранить данные локально на iphone?
- 20. Java лучше всего хранить процедурную информацию
- 21. Где хранить внешние учетные данные в JBoss?
- 22. Что лучше всего хранить в статьях в sql db?
- 23. Как хранить данные пользователя?
- 24. Как сохранить учетные данные пользователя для скрипта
- 25. Каким образом я должен хранить учетные данные пользователя?
- 26. Где лучше всего хранить экземпляр объекта ObjectContext?
- 27. Где хранить учетные данные на iPhone (имя пользователя или userId)?
- 28. Как хранить учетные данные пользователя, чтобы пользователи не могли снова войти в систему?
- 29. Sails.js, где хранить учетные данные безопасности?
- 30. Где хранить данные конфигурации для всего веб-приложения в Rails?
Это может зависеть от инфраструктуры вашего api backend, но если вы можете начать просто - почему бы не использовать cookie, как вы делали в прошлом? работает без необходимости «хранить» что-то особенное/браузерные приложения работали таким образом в течение многих лет без особых проблем. –
@ToranBillups это определенно возможность, но разве не будет риска безопасности при обходе частного токена в приложении, управляемом API? – onetwopunch
@onetwopunch, я думаю, не более рискованно, а затем передает cookie для обычного приложения. я говорю, если токен является ключом сортировки, и вы можете его истечь на стороне сервера, должно быть хорошо – charleetm