iOS应用程序 - Rails 4和Devise作为后端

时间:2014-02-01 16:55:24

标签: ios7 devise ruby-on-rails-4

我想知道如何在我的iOS应用中使用rails作为后端。

我需要的只是一个带有电子邮件和密码的用户,可以使用设计进行身份验证。 我已经使用devise和rails 4创建了一个用户。

我确实发现这篇文章http://jessewolgamott.com/blog/2012/01/19/the-one-with-a-json-api-login-using-devise/解释了我的需要,但有些事情仍然缺失。

  1. 当我尝试通过我的iOS应用程序进行POST时,我收到消息"无法验证CSRF令牌真实性"。如何在不跳过过滤器验证的情况下解决这个问题?verify_authenticity_token?

  2. iOS的请求代码如何?现在我正在做POSThttp://localhost:3000/api/users/sign_in.json并设置HTTPBody = [NSJSONSerialization dataWithJSONObject:jsonDictionary options:0 error:&jsonError],但是rails服务器只接收一个字符串作为整个json字典的键,而不是实际的json字典。

    params = {"{\"user\":{\"email\":\"qwe\",\"password\":\"123\"}}"=>nil, "action"=>"create", "controller"=>"api/sessions", "format"=>"json"}

  3. 我如何执行https请求而不是http,因此我可以隐藏密码和电子邮件字段,以防其他人尝试观看我的互联网流量?

  4. 非常感谢。

1 个答案:

答案 0 :(得分:0)

要使用Rails Applications Mobile和Android以及IOS,您必须使用JSONP:示例:

JS示例:

$.ajax({
  url: '/api_mobile',
  jsonp: "callback",
  dataType: "jsonp",
  cache: true,
  data: {method: 'login', other_data ...},
  success: function(res) {
    // response object
    console.log(res)
  },
  error: function(request, status, error) {
    alert("Error server: " + request.status);
  }
});

RAILS 4:

protect_from_forgery with: :exception, only: :api_mobile

# route /api_mobile
def api_mobile  
   json = {error: 'Not found Method'}
   case params[:method]
      when: 'login'
         if User.login(params[:username], params[:password])
            json = {notice: 'Login success'}
         else
            json = {error: 'Error Username or Password'}
         end
   end
   render json: json, :callback => params[:callback]
end

所有功能必须个性化和参数化