0

私たちは電子メールでデバイスを使用していましたが、これが必要な唯一の情報であるため、モバイルログイン (ユーザーは携帯電話番号を提供します) に移行しています。電子メールは良いですが、必須ではありません。

私はそれを携帯電話番号認証で動作させました:

config.authentication_keys = [ :mobile ]

入力した番号を正確に入力すると機能します。人々が番号を入力する方法はたくさんありますが(メールに対して)

すなわち

ローカル形式 0125551234

または国際 27125551234

DBに保存するときに実際に携帯電話番号を正規化するので、認証前に同じ正規化を使用したいと思います。

セッションコントローラーをオーバーライドする以外にそれを行う方法はありますか?

アップデート:

次の方法を使用しました: https://github.com/plataformatec/devise/wiki/How-To:-Allow-users-to-sign-in-using-their-username-or-email-address

その理由は、すでに何人かのユーザーがいて、モバイルをキャプチャしていない場合でも、電子メールでログインできるようにする必要があるためです。

4

2 に答える 2

0

params[:mobile]必要な形式に変換するメソッドを ApplicationController で指定できます (SessionsController をオーバーライドしたくない場合のみ) 。

prepend_before_filter :format_mobile_param

def format_mobile_param
  return unless params[:mobile]
  params[:mobile] = your_formatting_method(params[:method])
end

これにより、呼び出しが行われる前にパラメーターが変更されます ( before フィルターauthenticate_user!を呼び出すと仮定します)。authenticate_user!

于 2013-04-07T00:25:05.067 に答える