sorceryの細かい設定

sorceryを触っていて、気になったことがあったので記事として残す。

背景

railsのgem sorceryをユーザー認証として採用した。
sorceryのreset password機能も組み込んだが、間髪入れずに何回か連続で実行するも
1回目のメールしか届かなかった。

やりたいこと

メールの送信間隔を自由に設定したい。

方法

ドキュメントに従って、以下コマンドを入力すると
config/initializersにsorcery.rbが生成される。

rails g sorcery:install


sorcery.rbを細かく見ると、以下のような記述がある。

# Hammering protection: how long in seconds to wait before allowing another email to be sent.
# Default: `5 * 60`
#
# user.reset_password_time_between_emails = 


デフォルトでは、5 * 60 の300秒(5分)となっているとのこと。
コメントアウトを外し、ここの数字を設定してあげる。

# Hammering protection: how long in seconds to wait before allowing another email to be sent.
# Default: `5 * 60`
#
user.reset_password_time_between_emails = 5

以上のようにすると、5秒間隔でメールが送れるようになる。
メールが届かないのは意外と不安になるので、この設定はそこそこ大事かもしれない。

備考

また、よくあるリセットパスワードURLの有効期間もsorcery.rbで自由に設定できる。
以下記述を見つける。

# How many seconds before the reset request expires. nil for never expires.
# Default: `nil`
#
# user.reset_password_expiration_period =

コメント部分を和訳すると、

リセットパスワードのURL生成した後、何秒で無効化されるか。
nilの場合、一生有効のまま。

とのこと。
従って、この部分を

user.reset_password_expiration_period = 600

のようにしてあげると、10分間で切れるURLを生成することができる。