読者です 読者をやめる 読者になる 読者になる

Railsの認証にsorceryを使う

rails

認証といえば devise がよく使われていますが、富豪的なのでもう少しsimpleだという sorcery を使ってみました。
 
ちょろっと触った感じでは、お手軽で良いです。そのうちソースも読んでみます。

認証実装

Simple Password Authentication · NoamB/sorcery Wiki
に従えば、ほぼほぼokです。
 
keyはdefault emailなのですが、今回emailをoptionalにしてnameをkeyにするという方針にしたかったので、以下を修正。

# config/initializers/sorcery.rb
user.username_attribute_names = [:name]

OAuth実装

OAuthもfacebooktwitter、linkedin、xing、google、liveid、salesforceといろいろ対応しているようです。
External · NoamB/sorcery Wiki こちらもwikiに記載があるので、ほぼこの通りに実装すればok。

attr_accessible など過去の記述方法になっているところは無視するのと
secret keyなどは secrets.ymlに記載するようにしました。(gitの管理対象外にしてgitignoreにするのを忘れずに!)

# config/secrets.yml
development:
  twitter_key: twitter_key
  twitter_secret: twitter_secret


# config/initializers/sorcery.rb
  config.external_providers = [:twitter]

  config.twitter.key = Rails.application.secrets.twitter_key
  config.twitter.secret = Rails.application.secrets.twitter_secret
  config.twitter.callback_url = 'http://0.0.0.0:3000/oauth/callback?provider=twitter'
  config.twitter.user_info_mapping = { name: 'screen_name' }

See Also

Railsの認証にsorceryを使う - rochefort's blog