首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何发布authenticity_token?

如何发布authenticity_token?
EN

Stack Overflow用户
提问于 2016-08-21 07:50:17
回答 1查看 1.4K关注 0票数 0

现在,我使用arduino以json格式向rails发送数据。但是如何获取authenticity_token并将其发送到rails呢?应该写在哪里?在json还是http报头中?格式应该是什么?

如果我加上

代码语言:javascript
复制
protect_from_forgery :exception => :create

在控制器中,它工作fine.But,我不希望禁用CSRF保护。这是我的arduino代码:

代码语言:javascript
复制
    client.println("POST /players.json HTTP/1.1");
    client.println("Host: 192.168.1.3:3000");
    client.println("User-Agent: Arduino/1.0");
    client.println("csrf-param: authenticity_token");
    client.println("csrf-token: V4gTh8yNdz9VMybUXkI6tHxzAHdfk3I+UoiXhxZWK0bkoh8iG5hVJ5sZOjzMAYLlwCwsXQQM102b1hF6TVyYJw==");
    client.println("Connection: close");
    client.println(lengthInfo);
    client.println("Content-Type: application/json");
    client.println();
    root.printTo(client);

Root.printTo(客户)只派儿子来。

我发现了一个类似的问题:

HTTP request to update rails model from arduino

@Okomikeruko你知道如何从Arduino发送一个真实性令牌吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-21 08:55:15

真实性令牌是对基于会话的身份验证策略的安全检查。它主要做的是检查填写webform的用户是否与登录的用户相同(并避免XSS攻击)。

然而,在我看来,这种身份验证策略并不是公共API的最佳选择。在您的情况下,我将执行以下操作之一:

  • 基于会话的身份验证。第一个API请求应该是对用户控制器的POST请求。如果此请求成功,响应应该返回会话cookie,您可以使用它来验证以下请求(直到会话结束)。
  • 基于令牌的身份验证。您可以创建一个唯一的随机n-char字符串(可能80个字符?)这将是每个用户的秘密api密钥。在此之后,每个API请求都应该包含此键作为参数,以便表示控制器"It's me“。

请注意,您将在API查询中使用的控制器与您在web导航中使用的控制器不同。在我的项目中,我通常有一个文件夹"app/ controllers /v1“来存储API第一版中使用的控制器。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39062026

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档