gpt4 book ai didi

android - 使用 json post 从移动应用程序使用 Devise 注册一个帐户

转载 作者:行者123 更新时间:2023-11-29 00:34:08 25 4
gpt4 key购买 nike

我是 Rails 的新手,我希望获得有关从 Android 设备在我的 Rails 应用程序上注册帐户的帮助。目前我正在使用 Devise gem 进行用户注册。我能够使用 devise 的 token 进行用户身份验证,但我仍然不知道如何从我的手机注册一个帐户。

到目前为止,我正在研究两种方法。我的第一次尝试是创建一个名为 MobileRegistrationsController 的新 Controller 并具有如下创建方法:

class Api::V1::MobileRegistrationsController  < ApplicationController
respond_to :json

def create
@user = User.create!(params[user])
@user.ensure_authentication_token!

respond_to do |format|
format.json { render json: @user }
end
end
end

这是我的路线文件夹。为此,我遵循了 railscast 教程:

namespace :api do

namespace :v1 do
resources :tokens,:only => [:create, :destroy], :defaults => { :format => 'json' }
match 'register' => 'mobile_registrations#create', :via => "post", :defaults => { :format => 'json' }
end
end

从这里,当我使用我的 REST 客户端尝试发送一个 post 请求到

localhost:3000/api/v1/register

我得到了错误

ActionController::RoutingError (uninitialized constant    Api::V1::MobileRegistrationsController):

所以我猜我做的事情从根本上是错误的。我四处搜索,也许覆盖 Devise session Controller 是更好的方法?有没有人有这方面的经验,这会有所帮助?

谢谢!

更新:所以我正在尝试一条新路线。通过将其添加到我的路线文件夹

devise_scope :user do
match "api/v1/register" => "devise/registrations#create"
end

当我尝试向其发送发布请求时。我收到另一个错误:

WARNING: Can't verify CSRF token authenticity

我想这比我以前的要好。所以现在我只需要弄清楚如何获取我的 Rails 真实性 token 。

最佳答案

好的。所以我能够弄清楚。万一有人偶然发现并遇到同样的问题。它看起来像是我的代码中的一些错误的组合。

我重命名了我的 Controller ,因为我认为“未初始化常量”错误是我的 Controller 命名不当的结果。为了简单起见,我只是将我的 Controller 重命名为 RegistersController。这样就修复了我的路由错误。

这导致我遇到一个新错误,即 CSRF token 。我添加了这一行:

skip_before_filter :verify_authenticity_token, :only => :create

跳过验证方法。这对我来说很模糊,因为我认为这会给我的应用程序增加漏洞,所以如果有人对此有更好的解决方案,请告诉我。

所以在那之后,我的创建方法中出现了一个新错误,它是:

Validation failed: Email can't be blank, Password can't be blank

为了解决这个问题,我将创建方法更改为:

@user = User.create!(:email => params[:email], :password => params[:password], :password_confirmation => params[:password_confirmation])

我还更改了我的 json 响应以包含我的真实性 token ,我将其作为共享首选项存储在我的 android 应用程序中。

format.json { render :status=>200, :json=>{:token=>@user.authentication_token, :user => @user} }

关于android - 使用 json post 从移动应用程序使用 Devise 注册一个帐户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13651240/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com