我想知道如何在我的iOS应用中使用rails作为后端。
我需要的只是一个带有电子邮件和密码的用户,可以使用设计进行身份验证。 我已经使用devise和rails 4创建了一个用户。
我确实发现这篇文章http://jessewolgamott.com/blog/2012/01/19/the-one-with-a-json-api-login-using-devise/解释了我的需要,但有些事情仍然缺失。
当我尝试通过我的iOS应用程序进行POST时,我收到消息"无法验证CSRF令牌真实性"。如何在不跳过过滤器验证的情况下解决这个问题?verify_authenticity_token?
iOS的请求代码如何?现在我正在做POST
到http://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"}
我如何执行https请求而不是http,因此我可以隐藏密码和电子邮件字段,以防其他人尝试观看我的互联网流量?
非常感谢。
答案 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
所有功能必须个性化和参数化