IT Office Nishimiyahara

個人用スマホから商用プログラミングまでなんでもお任せ下さい

Authen::UsersのデータベースハンドルをNanoAで使えた話

      2014/05/14

どうにかなるものです。

NanoAのデータベースハンドルを使えればよかったのだが、生憎とそんな機能はついていなかった。

[NanoAでAuthenticationしたい - 日曜プログラマのそゞろ事]

NanoAのconfigを使えば、NanoA本体に影響を及ぼさずにデータベースハンドルを入れ替えることが可能でした。

アプリケーション(今の場合はLightBBS)用のdbメソッドを作ることによって、NanoA::Config::dbを上書きしています。 こっちはなんとかできたのですが、Crypt::SaltedHashを利用するのはちょっと難しそうです。 Authen::Usersでnewした後に、プロパティを入れ替えればいけそうな気がしたのですが、認証の仕組みが違うので単純には行きませんでした。 Authen::Usersはデータベースから取ってきたsha変換済みのパスワードと、入力したパスワードをsha変換したモノとを比較しています。 そこまでがセットになっているのです。 しかし、Crypt::SaltedHashは、普通に変換するとsaltを自動的に入れてしまうので、単純に比較しても合わないのです。(元々それが特徴なわけですが) 比較するときは、変換済みのパスワードと入力したパスワードをCrypt::SaltedHashのvalidateメソッドに渡してやる必要があります。 すると、内部でsaltを解析して照合ができるようになります。 まあ、仕組みはわかりましたが。 さて、どうしたもんでしょう。

respo

respo link

ZenBackWidget

 - 情報技術について