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

ottatiのブログ

無職学生がネットにクソアプリをまき散らしていく様子

ExpressなNodeでEmailとパスワードでログイン٩(๑❛ᴗ❛๑)۶

あああ やり方 express node

f:id:ottati:20150103125718g:plain     🍣

Spam Ham Egg

どうやら僕はおっちょこちょいらしい。最近は学校に騙されてどこかにメールアドレスを登録してしまったみたいで、就活メールが一日132万2043件くらいくる。もっとかな。送信元を迷惑メールにすればいいのでは。メール配信を解除すればいいのでは。毎回色々アドレスからメールがくるのでそれは無意味だ。あれは現代のスパムスパムスパムスパムスパムスパムスパムスパムスパム。お陰であのメールアドレスは死んだ。他のGmailアカウントを取ろうと考えている。しくじった。

f:id:ottati:20150103125718g:plain

Node Express Passport

Node x Express x Passportでメールアドレスとパスワードでログインするシンプルなアプリを作る?

f:id:ottati:20141231230258g:plain

仕様

  • ユーザのログイン・ログアウト
  • ユーザの登録
  • csrf対策無し(ΦωΦ)

できたやつ

とりあえず適当に作ってGitHubにあげてみた。 https://github.com/ottatiyarou/login-with-email-app

面倒なのでpassport-local-mongooseっていうクソ小さいモジュールを使っている。https://github.com/saintedlama/passport-local-mongoose

Nodeを使った開発経験はあんまりないので(今年の1月にリプライを送ると日記が作成される「リプ日記」を作った。Twitterでリプライを送ると日記にしちゃうサービス、『リプ日記』を公開しました - おっ立ち野郎。今は無料で運営されているが0.5GB超えたらmongolabへお金を払わなければならないのでどうしようか考えている)、できあがってしまったコードは残念な感じかもしれない。

疑問点

f:id:ottati:20141231230258g:plain

ExpressなアプリケーションのBest practiceって何

今回はExpressのジェネレータ使ってここ(Best practices for Express app structure)に基本従った。

メンテしやすい、開発しやすい、きれいなディレクトリ構成ってなんだろうな。

ectってどうなの

ejsがテンプレートの継承、extend的な、ができなくて驚いた。なので似てて継承ができるっぽいectっていうの使ってる。

jadeはインデントでよくわからなくなってくる

テストって

mocha、ランドマークにあるタリーズで商品名を見て気付くまでずっと"もちゃ"と読むのかと思っていた、を使っている。mocha --recurcive -R nyanってすると幸せになれた。(mocha.なんたらというファイルを書けばデフォルトの挙動を決められるっぽい)

supertestというモジュールを使えばルートのテストが簡単と書いてあるのでとりあえず/loginにgetした時に200になるのを書いといた。

あとmongooseのconnectの挙動がどうなってるのか確認しきれていない。routesのテストとmodelsのテストをいっしょに書いたら

  1. supertestでapp.jsのmongoose.connect()が始まって
  2. modelsの方のテストが始まったころに接続が完了しているが
  3. modelsの方のテストのbeforeの中でのmongoose.connect()が失敗している?

テストについてはまだ謎なので他のプロジェクトのテストをもっと見るべきだなあ...

csrf対策について

餅論Postされるときはトークンを発行したい。app.use(express.csrf())ですか?これも調べなければ。

終わりに

2015年ですら花粉症を防げないとは!

f:id:ottati:20150103125718g:plain