deviseの主にルーティング周りがなんだかよくわからないので、sorceryを試してみた。ソースはgithubにあげたけど参考になるかは微妙。
sorceryはだいたい
- モデルで認証処理を行うメソッドを提供する
- 登録時にsalt値の生成とそれによるパスワードの暗号化
User#authenticate
に入力されたパスワードを渡してチェックするようなやつ
- コントローラに必要そうなヘルパメソッドを提供する
current_user
とか、前述のauthenticate
をbefore_action
で行うためのrequire_login
とかActionController::Base
でinclude
してる
の2つを提供している。
なので、deviseでは登録や認証部分のフローを実装したコントローラも提供しているけど、sorceryでは「ヘルパとか提供するからそこは自分で作ってくれ」って感じ。手間はあるけど、どこでどうなるかを自分で設定できるぶん柔軟で使いやすそう。
参考
- RailsCasts #283 Authentication with Sorcery
- RailsCasts #250 Authentication from Scratch
- Locking accounts - アカウントの有効・無効は独自実装が必要(といっても難しくはない)