2012-02-01 8 views
0

私はユーザー認証のためのdevise gemを使用して、レールアプリを持っています。私はuser_withinパラメータを設定しても、Deviseユーザーはサインインしません

確認メールを送信してユーザーに送信しました。走っている。私は確認メールを受け取りました。アカウントにログインする前にアカウントを確認する必要があります。

アカウントを確認する前に、私たちのアプリをしばらく試してみましょう。だから、私は、機器の初期設定でconfirm_withinをセットアップしました。それは失敗です。ユーザーが登録フォームに記入すると、登録後にログインページにリダイレクトされます。ログを確認したところ、ユーザーがサインインしていないようです。認証に失敗しました。フィルタの前に

これは私の設定です。

モデル:user.rb

devise :database_authenticatable, :registerable, :encryptable, 
     :recoverable, :rememberable, :trackable, :validatable, :confirmable 

route.rb

devise_for :users, :controllers => {:password => "passwords"} 

イニシャライザ:devise.rb

config.confirm_within = 2.days 

application_controller.rb

def after_sign_in_path_for(resource) 
     stored_location_for(resource) || jobs_path 
    end 
01私は私が何かを逃したのかわからない

jobs_controller.rb

class JobsController < ApplicationController 
    before_filter :authenticate_user! 

    ***some functions 
    end 

。誰かがこの問題を解決する方法を親切に教えてくれますか?ありがとう。

+0

あなたは実際にユーザーにサインインしましたか?ユーザがサインインするためには 'sign_in @ user'を呼び出す必要があります。通常、あなたはサインインフォームを送信するときにユーザのクレデンシャルを認証した後にこれを行います。 – Batkins

+0

@Batkinsに感謝します。登録と確認プロセスはDeviseによって制御されます。私は公式の宝石を使用し、内部のものは変更しなかった。私はソースコードをチェックして、登録#でユーザーがサインインしているようだと思う。 –

答えて

1

私はもっと助けてもらえません。私はDeviseのconfirm_within機能を使った経験はありません。しかし、according to this questionは、誤っていないとメールに返信してメールアドレスを確認するまでログインしていないため、登録後にユーザーがログアウトしたように見えます。登録後に自動的にログインするには、confirm_withinオプションを削除する必要があります。 confirm_withinオプションは、登録した電子メールアドレスが実際に自分のものであることを確認するための時間です(電子メールを受け取るリンクをクリックしてください)。

+0

を使用してください。 config_withinは、ユーザーが自分のアカウントを確認せずにサインインできるようにするパラメータです。あなたの助けをありがとう。 :) –

+0

@Batkinsが正しいです。 – Magne

1

私はあなたが間違っているドキュメントを読んでいると思う: 「* + allow_unconfirmed_access_for +:。。この期間の後、ユーザのアクセスが拒否され、ユーザーがそれを確認する前に、自分のアカウント #へのアクセスを許可したい時は、あなたは することができます# #アカウントを確認して、特定の期間(つまり、7日後)にブロックすることなく、あなたのアプリケーションのいくつかの機能にアクセスできるようにするには# #allow_unconfirmed_access_forはデフォルトでは0です。#* +再確認可能+:メールの変更を確認する必要があります( #初期アカウント確認とまったく同じ方法)。追加のunconfirmed_emaが必要ですil #dbフィールドを設定します(移行時に確認してください)。確認された新着メールが #未確認のメールの欄に格納され、成功した場合は #確認のメールの欄にコピーされます。 #* + confirm_within +:送信された確認トークンが無効になるまでの時間。 #一定時間内に強制的に確認することができます。「ユーザーはあなたが定義する必要がある特定の時間のために確認せずにログインできるようにするためにそう

https://github.com/plataformatec/devise/blob/master/lib/devise/models/confirmable.rbここで

config.allow_unconfirmed_access_for

と、ユーザが確認できるようにするために、どの彼はもはや確認ができなくなったので、トークンが無効になるため、そのメールのために送られる新たな確認が必要であることを意味します:

config.confirm_within

希望でした。

+0

実際にconfig.confirm_withinはconfig.allow_unconfirmed_access_forの古い名前でした。 –

関連する問題