使用Rails webservice进行移动应用程序身份验证

时间:2015-12-03 10:59:09

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-4

我正在为移动应用编写webservice

现在,我的客户要求是authentication的{​​{1}} API应由An Access Key完成,这将与Webservice调用一起提供。该访问密钥将根据会话而变化。

我搜索了很多地方并发现了一些文章和轨道广播,Oauth或其中一些文章暗示cancan gem也可以作为Role based management

但我需要针对该特定访问密钥进行身份验证。

请提出一些建议。

1 个答案:

答案 0 :(得分:0)

您可以使用Devise.secure_compare方法。使用字段api_token:string创建用户模型。创建用户并生成随机,唯一的api_token。在API请求参数中传递那些api_token。

class ApiController < ApplicationController
 before_filter :parse_request, :authenticate_user_from_token!

 private
   def authenticate_user_from_token!
     if !@json['api_token']
       render nothing: true, status: :unauthorized
     else
       @user = nil
       User.find_each do |u|
         if Devise.secure_compare(u.api_token, @json['api_token'])
           @user = u
         end
       end
     end
   end

   def parse_request
     @json = JSON.parse(request.body.read)
   end
 end

所有API的控制器都将继承自ApiController

 class ProjectsController < ApiController

 end