0

私はユーザー登録のための工夫を実装していますが、いくつかのカスタマイズがあり、それは以下のとおりです。

  • ユーザーがユーザー名、電子メール、パスワードで登録すると、電子メールがユーザーに送信されます
  • 電子メールで、ユーザーはサインアップ プロセスを完了するために必要なシークレット コードを取得します。
  • ユーザーが「アプリに移動」ボタンをクリックすると、ユーザーはアプリにリダイレクトされ、ここでユーザーはそのシークレット コードを使用してサインアップ プロセスを完了する必要があります。
  • ユーザーがサインアップ プロセスを完了すると、ユーザーとそのシークレット コードの間に 1 対 1 の関係が確立されます。

インターネットでたくさん検索しましたが、答えが見つかりませんでした。

問題: Rails でシークレット コードを作成し、それをメールでユーザーに送信し、ユーザーが取得したコードと照合する方法がわかりません。

注: 私のアプリケーションでは、シークレット コードとパスワードは 2 つの異なるものです。

4

1 に答える 1

0

Devise には、Confirmableまさにこれを行う と呼ばれる内部モジュールがあります。

それを使用するには、次のことを行う必要があります。

  • デバイスのモデル:confirmable:registerable

    class User
      # ...
      devise :confirmable, :registerable ...
      # ...
    end
    
  • Confirmation_token フィールドを作成する移行を実行する

    class AddConfirmableToUsers < ActiveRecord::Migration
      def self.up
        change_table(:users) do |t|
          t.confirmable
        end
        add_index :users, :confirmation_token, :unique => true
      end
    
      def self.down
         remove_column :users, :confirmable
      end
    end
    

すでにユーザーがいて、この確認プロセスに従うことを望まない場合は、ユーザーを確認する必要があります。あなたはそれを行うことができます

User.update_all ["confirmed_at = ?", Time.now]

コンソールで。

その他の参考文献: Confirable ModuleDevise でユーザーに確認可能を追加する

于 2013-03-23T15:04:49.563 に答える