Я создаю API-интерфейс Rest с рельсами. И я хочу реализовать истечение для токена. Как это работает ? Я не внедряю разработку, потому что мне это не нужно. Я просто хочу, когда я создаю пользователя, он получил токен обновить токен. Так что это не так, потому что нет сторонних сторон, использующих api.Окончание срока действия API-интерфейсов Rails для токена авторизации пользователя
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
Простой auth с простой сгенерированной работой токена. Но я думаю, что маркер срока действия более безопасен. Конечно, соединение связано с 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