3

工夫に問題がある。トークンを含むサインアップURLがあります...localhost:3000 / users / sign_up / df293b00ae137b8b6436d45e622304aedc549072

登録が失敗すると(パスワードが一致しないなど)、アプリはlocalhost:3000 / usersにリダイレクトし、モデルからの適切なフラッシュメッセージを表示します。

ただし、トークンを使用してURLにリダイレクトするアプリが必要です。そのため、コントローラーにredirect_to:backをスローすると、元に戻りますが、フラッシュメッセージが表示されません。

ページをリダイレクトして(正確なURLを保持して)、フラッシュメッセージを表示する方法。

deviseコントローラーからのコードは次のとおりです。

 def new
    resource = build_resource({})
    respond_with resource
  end

  # POST /resource
  def create
    build_resource

    if resource.save
      if resource.active_for_authentication?
        set_flash_message :notice, :signed_up if is_navigational_format?
        sign_up(resource_name, resource)
        respond_with resource, :location => after_sign_up_path_for(resource)
      else
        set_flash_message :notice, :"signed_up_but_#{resource.inactive_message}" if is_navigational_format?
        expire_session_data_after_sign_in!
        respond_with resource, :location => after_inactive_sign_up_path_for(resource)
      end
    else
      clean_up_passwords resource
      respond_with resource
    end
  end

どんな助けでも素晴らしいでしょう!

4

1 に答える 1

-1

必要なのは、デバイス用のカスタムFailureAppを作成することです。これは、ユーザーが認証できない場合(認証が失敗した場合)にユーザーを特定のページにリダイレクトするために使用されます。

誰がFailureアプリを作成して使用するかについての詳細は、devisewikiで確認できます。

https://github.com/plataformatec/devise/wiki/How-To:-Redirect-to-a-specific-page-when-the-user-can-not-be-authenticated

于 2013-01-05T13:58:37.603 に答える