【发布时间】:2015-12-26 03:59:56
【问题描述】:
我正在尝试开发一个 Rails 应用程序,该应用程序主要与 Android 应用程序用户进行交流。人们应该能够在应用内注册和登录(他们只能在登录时执行大多数请求)。
我浏览了许多关于如何在应用程序上执行相当于“存储会话”的教程,但所有教程都建议使用 gem 'devise' 及其 :token_authenticable,它们已被弃用 有一段时间了。
我想要关于如何执行等效操作的严肃建议。据我了解,客户端发送带有参数的请求,例如{email: "some@email.com", password: "pw12345"},我检查它们是否与现有用户匹配并检索字符串令牌,该客户端将从现在开始通过标头发送每个请求(例如{"my_app_user_email": "some@email.com", "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 模型来创建和验证令牌?
额外的代码
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
【问题讨论】:
-
也看看jwt jwt.io
标签: android ruby-on-rails authentication token