CoffeeScript debbugging using Source Map

CoffeeScript 1.6.1版多了一個非常有用的功能:Source Map支援,關於Source Map的介紹可以看這篇。為什麼會說非常有用呢?以coffeescript開發的時候最麻煩的莫過於debug了,因為最後執行的其實是js檔,導致debug時我們看到的都是編譯好的js檔。所幸原本我們必須從js自行導回coffee程式碼的動作,剛好就是Source Map設計來解決的目標:Source Map是一個在兩份文件中建立起一個互相對應的關係的工具(在coffeescript的情境中就是編譯前的coffee檔及編譯後的js檔之前每一行程式碼的關係)。

NodeJS認證功能實作 - PassportJS介紹

以PassportJS + MongoDB建立一個具有認證機制的網頁應用程式

認證是許多應用程式會有的功能,本文就來介紹NodeJS中最被廣泛使用的認證函式庫-PassportJS。PassportJS基本上是用來作為expressJS中的middleware,負責處理認證的部分,passportJS是一個強大且完整的函式庫,提供多種不同的認證方式讓你依照自己的需求來選擇(稱作strategy)。所謂完整即是說大部份的認證方式(FB, Google, OAuth, OpenID)都已經有寫好的strategy,僅需要把對應的strategy lib抓下來即可使用,而如果有需要自定模組的話也可以自己寫一個strategy來處理。

由於passportJS的doc實在寫的不是很完整,因此我寫了一個範例的project跟這篇文章來解釋一下整個流程,以passport-local的strategy也就是使用自己local的資料庫來做認證,以下先介紹project的大致架構,再來介紹passport的用法。

功能簡介:

  1. 連至此web app的頁面會先被導向登入頁面
  2. 認證之後依照權限(管理員與非管理員)顯示不同功能
  3. 非管理員僅只能看到index頁面,及登出功能
  4. 管理員除了index頁面之外另外可以看到此系統的使用者列表