ちょっとしたWebサイトを作ろうとして、Elixirを最近触っていることもあってElixir x Phoenixで構築し始めている最近です。
その中で簡単なログイン機能を追加しようとしたところ、awesome-elixirにてGuardianなる開発途中の認証ライブラリを見つけました。開発者はRack Authenticationのwardenの開発者でもあるのですね。ほー。
試したのは、v0.5.0
Readmeを見ながら作業かなーと思っていたのですが、サンプル実装を公開していることを知り、まずはそこから動かしてみることにしました。
ただ、動かしてみるとPhoenixが0.13.1ベース。
私が今使っているのは0.15.0ベース。
….
ということで、サンプルをPhoenix 0.13.1ベースから0.15.0ベースに書き換えました。開発者の方へPRも投げたので、もしかするとマージされるかも。
- 変更ブランチはこちら
- 差分はこちら
上記をcloneして以下の通りに実行すれば、Phoenix 0.15.0上でアプリを起動、ログイン試したり諸々できます。
npm install mix deps.get # postgresを起動 # config/dev.exs のデータベースへの接続名やパスワードを変更する mix deps.create mix deps.migrate mix phoenix.server
主な修正はPhoenixの0.13.1=>0.14.0へのアップグレードガイド、0.14.0=>0.15.0へのアップグレードガイドをみるとわかるのですが、この例のChannelで使うSocket周りに破壊的な変更が入っているのと、controllerで :plug action を呼ぶ必要がなくなっているところです。
なんだかんだでこうやって簡単な例からコード追うと理解が進んで良いですね。
session管理の箇所とか、色々参考になりました。
作者が簡単な説明をこことかで説明しているので、そこをまず読んでみると良いかもしれません。あと、サンプル実装は mix phoenix.new で生成されたアプリをそのまま使っているので、差分をコードリーディングすると良さそう。
ちなみに、このサンプルアプリ、以下のようにsession情報を見ながら動作をみることができるので理解の助けになりそうです。
Rubyを継承してか?Elixir、なんかゲームみたいなライブラリ名が結構ありますね。
