Ruby on rails 设计“授权注册失败-将不接受或跳过”;确认“成功”url;

Ruby on rails 设计“授权注册失败-将不接受或跳过”;确认“成功”url;,ruby-on-rails,devise,Ruby On Rails,Devise,我无法让“设计令牌认证”注册生效 我已经到了需要帮助/建议的地步。我试图在github页面上找到Desive_token_auth的帮助/建议,但没有收到任何回复 我希望在这里寻求帮助可能会奏效。任何帮助都将不胜感激 摘要- 我已根据我所了解的正确流程安装和配置Desive_token_auth,并已通过“help me”(帮助我)和谷歌搜索尽可能确认此设置。。我正在尝试创建一个用户,希望我能收到一封确认链接电子邮件 如果我包含参数“确认\u成功\u url”- 使用本条— curl-XPOST

我无法让“设计令牌认证”注册生效

我已经到了需要帮助/建议的地步。我试图在github页面上找到Desive_token_auth的帮助/建议,但没有收到任何回复

我希望在这里寻求帮助可能会奏效。任何帮助都将不胜感激

摘要-

我已根据我所了解的正确流程安装和配置Desive_token_auth,并已通过“help me”(帮助我)和谷歌搜索尽可能确认此设置。。我正在尝试创建一个用户,希望我能收到一封确认链接电子邮件

  • 如果我包含参数“确认\u成功\u url”- 使用本条—

    curl-XPOST--data“电子邮件=mail@mail.com&password=123456789&password\u confirmation=12345678&confirm\u success\u url='''-o results.html

  • 我收到这个-

    ActionController::UnpermittedParameters in  DeviseTokenAuth::RegistrationsController#create
    found unpermitted parameter: confirm_success_url ... (much more stuff)
    
  • 如果我没有包括“确认\u成功\u url” 用这个-

    curl-XPOST--data“电子邮件=mail@mail.com&password=123456789&password\u confirmation=123456789“-o results.html

  • 我收到这个-

    {"status":"error","data":    {"id":null,"provider":"email","uid":"","name":null,"nickname":null,"image":null,"email":"mail@mail.com","created_at":null,"updated_at":null},"errors":["Missing `confirm_success_url` param."]}
    
    所以基本上-

  • 在帖子数据中包括“确认成功\u url”->我收到“确认成功\u url”的“未授权参数”
  • 不包括帖子数据中的“确认成功\u url”->我收到“确认成功\u url”的“缺少参数”
  • 这几乎是一个没有赢家的局面

    这是我的详细资料-

    详情-

    routing.rb-

    Iosrails::Application.routes.draw do
    namespace :api  do
        scope :v1 do
        mount_devise_token_auth_for 'User', at: 'auth'
    end
    end
    end
    
    应用程序\u controller.rb-

    class ApplicationController < ActionController::Base
    include DeviseTokenAuth::Concerns::SetUserByToken
    protect_from_forgery with: :null_session
    end
    
    看起来CSRF令牌真实性可能存在问题(请参阅上面的日志),但我已根据我的理解(:null_session)设置了所有设置,以避免该问题

    -- 此外,为了查看将confirm_success_url设置为允许的参数是否可以解决问题,我还尝试了以下方法-

    class ApplicationController < ActionController::Base
      include DeviseTokenAuth::Concerns::SetUserByToken
      before_action :configure_permitted_parameters, if: :devise_controller?
      protect_from_forgery with: :null_session
    
    protected
      def configure_permitted_parameters
        devise_parameter_sanitizer.for(:sign_up) << :confirm_success_url
      end
    end
    
    我认为这是有意义的,因为“confirm\u success\u url”不是一个用户模型属性

    那么“确认成功”应该是什么呢?是否应包括/排除

    最后,我在“designe_token_auth.rb”中添加了以下内容,但情况没有改变

    default_confirm_success_url = "/"
    
    任何帮助或指点都会非常好


    谢谢。

    也许您正在application\u controller.rb或registrations\u controller中寻找类似的内容。这通常是使用designe指定/覆盖这些依赖路径的方式

    def after_confirmation_path_for(resource_name, resource)
      '/'
    end
    

    您需要做的就是从您的设计模型中删除
    :confirmable

    我相信设计令牌\u auth允许您在设计令牌\u auth.rb中设置默认的\u confirm\u success\u url。通过设置并更新gem
    gem“designe\u token\u auth”,“>=0.1.32.beta9”
    I能够使注册生效。但当我在POST数据中包含“confirm_success_url”时,它继续抛出我上面列出的错误——这是首选方法。我(仍然)不知道为什么这不起作用。你明白了吗?似乎需要运行一些迁移来添加可确认的必填字段。
    unknown attribute 'confirm_success_url' for User.
    
    default_confirm_success_url = "/"
    
    def after_confirmation_path_for(resource_name, resource)
      '/'
    end