Я пытаюсь разработать приложение Rails, которое будет в основном взаимодействовать с пользователями Android-приложений. Люди должны иметь возможность зарегистрироваться и войти в приложение (они могут выполнять только большинство запросов при входе в систему).Rails аутентификация пользователей из собственного приложения для Android
Я просмотрел множество руководств о том, как сделать эквивалент «сохранение сеанса» на приложении, но все они рекомендует использовать gem 'devise'
и ее :token_authenticable
, который был устаревшего в течение некоторого времени.
Мне нужен серьезный совет о том, как выполнить что-то эквивалентное. По моему мнению, клиент отправляет запрос с параметрами, такими как {email: "[email protected]", password: "pw12345"}
, я проверяю, что они соответствуют существующему пользователю и извлекают токен, который этот клиент будет теперь отправлять в каждом запросе через заголовки (например, {"my_app_user_email": "[email protected]", "my_app_user_token":"abcdef123456"}
).
Я уже установить некоторые методы с фальшивыми ценностями, такими как
def login
if valid_user?(params[:email], params[:password])
render json: {user_token: default_user_token}
else
render json: {message: 'Couldn\'t login'}, status: 401
end
end
Где default_user_token
является фиксированной строкой, и valid_user?
сравнивает с фиксированными значениями, а также.
Я полагаю, что моя проблема заключается в том, что это правильный подход, и если да, то как я могу создать модель User
, которая создает и проверяет токены?
Extra бит кода
def verify_token # This already works by using default values in the Android app code
email = request.headers['HTTP_MY_APP_USER_EMAIL']
token = request.headers['HTTP_MY_APP_USER_TOKEN']
user = User.find_by_email(email)
user && user.valid_token?(token) # returns true for default_user_token, for now
end
вы можете попробовать https://github.com/doorkeeper-gem/doorkeeper – IS04
также взгляните на jwt http://jwt.io/ – dimakura