0
我使用rails構建Rest API。我想爲令牌實施到期。它是如何工作的? 我不想實現設計,因爲我不需要那麼做。 我只想當我創建一個用戶,他收到一個令牌刷新令牌。 所以它不是真的oauth,因爲沒有第三方使用api。用戶認證令牌的Rails API過期
This is my user model.
require 'securerandom'
class User
field :auth_token, type: String
field :name, type: String
field :phone, type: String
field :image, type: String
#Generate URLS for different image sizes...
def as_json(options)
json = super
self.image.styles.each do | format |
json = json.merge({"image_"+format[0].to_s => self.image(format[0])})
end
json
end
private
def set_auth_token
return if auth_token.present?
self.auth_token = generate_auth_token
end
def generate_auth_token
SecureRandom.hex(90)
end
end
如此簡單的認證與一個簡單的生成令牌的作品。但我認爲使用過期令牌更安全。當然,連接是通過SSL。
class ApplicationController < ActionController::API
include ActionController::HttpAuthentication::Token::ControllerMethods
def current_user
@current_user = User.find(params[:user_id])
end
protected
def authenticate
authenticate_token || authentication_request
end
def authenticate_token
authenticate_or_request_with_http_token do |token, options|
User.where(auth_token: token).first
end
end
def authentication_request(controller, realm)
controller.headers["WWW-Authenticate"] = %(Token realm="#{realm.gsub(/"/, "")}")
controller.__send__ :render, :text => "HTTP Token: Access denied.\n", :status => :unauthorized
end
def request_http_token_authentication(realm = "Application")
self.headers["WWW-Authenticate"] = %(Token realm="#{realm.gsub(/"/, "")}")
render :json => {:error => "HTTP Token: Access denied."}, :status => :unauthorized
end
end
謝謝你!爲你的答案:)以及它如何與刷新令牌一起工作?因爲我想如果令牌過期,用戶收到一個新的?所以我想創建2個令牌一個授權令牌和一個刷新令牌。需要刷新令牌才能獲得新的令牌?:/ – BilalReffas
不管您喜歡如何,您都可以刷新令牌 - 如果您需要用戶必須交換的第二個令牌,請構建它。 –
謝謝你好,它從安全的角度來看更好隱藏令牌何時呈現它? – BilalReffas