Rails + Devise + API + 用户注册

6

我是一个新手,在学习Ruby和Rails,到目前为止,我已经使用Devise设置了用户管理。现在,我正在尝试集成支持移动Android和iOS应用程序。到目前为止,他们可以登录和注销并获取身份验证令牌。但除此之外,我还希望他们能够注册。

我理解,我需要向以下地址进行发布:

http://localhost:3000/users/sign_up

这篇文章看起来怎么样?如何获取JSON响应?我在stackoverflow上发现了这个。

"utf8=✓&authenticity_token=n5vXMnlzrXefnKQEV4SmVM8cFdHDCUxMYWEBMHp9fDw%3D&user[email]=asd%40fasd.org&user[password]=321&user[password_confirmation]=1233&commit=Sign+up"

很遗憾,这不起作用 - 我得到了“错误请求”的消息。我对这个例子还有几个问题。令牌真实性是什么?我怎样才能获得一个?我猜这不是设备令牌身份验证,因为用户甚至没有资格拥有一个。
另外,在成功登录后,我想将“注册成功”消息与生成的设备身份验证令牌捆绑在一起。所以我想我必须以某种方式扩展设备的现有注册控制器。
非常感谢您的帮助!
1个回答

6
Devise已经将所有相关内容设置好了。根据您的注册路径,我推断您挂载了Devise到http://localhost:3000/users。Devise包括所有必需的控制器和视图,包括登录表单、注册表单、电子邮件确认表单和密码重置表单。
GET http://localhost:3000/users/sign_up实际上是一个供用户注册的表单。该页面上的表单将POST到http://localhost:3000/users/,这将进入Devise的注册控制器的create动作。
假设/users/sign_up没有任何操作或视图,请检查是否存在注册表单(假设您在routes.rb文件中正确设置了devise_for)。

感谢澄清。我的 sign_up 视图已经可用了。现在 /users/ 的注册请求已经可以工作了。响应看起来像这样:{"created_at":"2012-09-07T12:59:51Z","email":"asd@fasd.org","id":3,"updated_at":"2012-09-07T12:59:51Z"}我希望在这个响应中收到一个 devise 认证令牌,以便用户在访问 API 时可以使用该令牌。如何处理?我猜我必须重写 devise 的注册控制器? - Dominik Schreiber
如果您想让控制器执行不同或额外的操作,可以覆盖设备控制器 - 详见 https://github.com/plataformatec/devise#configuring-controllers。 - ronalchn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接