Digest認証も入れました。production扱いです。生のパスワードがネット上を流れるのはよくないということで。Digest認証をそのまま使うのは不便なので、2つ工夫をしました。一つは、JavaScriptでDigestを生成して認証することです。Digest認証の最大の問題はUIがブラウザ依存だということです。realmで指定する文字列しか指定できません。ブラウザがパスワードを覚えてしまうので、アプリ側からログアウトできません。そこで、DigestのヘッダーをJavaScriptで生成しました。これは、完全な仕様通りではありません。今回のサーバ実装ではたまたまnonceのサーバ側のチェックを省略していたのでできてしまったまでです。fallbackするだけなので、リスクが増えるわけではないはずです。逆に、パスワードを一回目で間違えた場合もfallbackしてしまいます。このあたり、いい解決法がないようです。testで使いました。Requestしておきました。無事マージされました。便利なのですが、ちょっと使い方にくせがあります。チュートリアルを増やさないと使えるレベルにならないかも。書いたのですが、ライブラリの紹介をし損ねたので紹介します。そもそもの動機は、Twitterクローンを簡単に作りたいと思ったことが発端です。そこで、なにかいいライブラリはないかと色々調べたら、Railsもどきのフルスタックフレームワークがいくつか見つかりました。http://locomotivejs.org/他にもいっぱいあるのですが、気になったのがこのあたりです。ところが、なんと言うかAngularJSを使おうとするとこれらのライブラリはオーバースペックな感じがするのです。Railsのようにデファクトが一つある状態であればいいですが、もどきがいっぱいある状態ではコンベンションも統一感がなさそうです。Angularを前提とするのであれば、フレームワークではなくもっとシンプルなライブラリがあればいいのではないかと思いました。それでもって、面倒なことはそのライブラリが引き受けてくれるような。そこで、TwitterやFacebookのようなSNSのサイトを作ることに限定したライブラリを作りました。node.jsではexpress.jsがほぼデファクトなのでexpressのmiddlewareとして作りました。middlewareにすることで、単一のフレームワークに依存することなく、他のアプリにアドオンする形で導入できます。面倒な、認証や権限管理の機能はライブラリが面倒みてくれます。based)の機能が用意されているだけですが、プラグインとして他の認証や権限管理の機能を追加できるようになっています。通知(メールアラートなど)の機能も今後追加してきたいと考えています。このライブラリを使うと、フロントエンドを作るだけですぐサービスできます。Railsのようにデフォルトがないので作らないとなにもできないのですが、Angularに慣れていればコンベンションを意識してコーディングするよりもずっと楽かもしれません。スクリーンキャストを見てみると雰囲気が分かるかもしれません。したら、分からないかもしれません。ソースコードは、https://github.com/dai-shi/social-cms-backendにあります。最近知ったのですが、http://sproute.io/というフレームワークもあるようですね。こちらは比較的SNSに特化したようなフレームワークであるようです。ほとんどコーディングなしでTwitterクローンが作れるようです。dai-shiみなさん、AngularJS使ってますか?Angularを使うと、お手軽にWebアプリ(と言っていいのかな)が作れます。そのお手軽さをさらに助けるのが、Node.jsとそのライブラリ達です。(いや、Nodeに限った話でもないですが。細かい説明は他にお任せしますが、Connect/Expressやその様々なmiddlewareを使うと機能を色々追加できます。今回、そのmiddlewareの一つとして、SNSのバックエンドライブラリを作りました。これを使うと、フロントエンドを作るだけで簡単にSNSのサイトができあがります。試しに、Twitterクローンを作ってみました。今回はフォロー機能などなしの単機能版です。ちなみに、フォローやグループの機能はライブラリには入ってます。Railsのまねをして15分でコーディングするスクリーンキャストを作りました。NodeやAngularの知識を前提としているので、見るだけそれらが理解できるようになるわけではありませんが、どうぞご覧ください。音もテロップもなし、それどころかマウスポインタもなしです。スクリーンキャストを別ウインドウで開くコーディングした結果のソースコードはこちらに置いてあります。https://github.com/dai-shi/twitter-clone-sample/tree/20130804_recorded実は一文字だけ打ち間違いがあってあとから修正しました。作ったTwitterクローンを動くようにアップしました。http://twitterclonesample-nodeangularapp.rhcloud.com/もしよろしければ試してみてください。