在一個專案裏,客戶提出一個額外的需求:
「我想要把我們原有的好幾個網站,登入的功能整合到現在這個專案裏。」
可行嗎?當然可以!客戶接著又說:
「應該很簡單吧?只要提供幾個API就行了。」
疑?是嗎?
客戶進一步說明了他們期望的結果,原來客戶希望他們原有的多個網站,可以將使用者登入的介面,移轉到目前進行的專案裏,以便利用現有的後台作使用者管理。
在客戶的理解中,「只要提供兩、三個API串接就好啦,應該很簡單,花不了幾個小時處理啦~」
要整合原有的登入系統,做不做得到?當然可以!只是,有這麼簡單就可以達成嗎?那可不一定喔~
使用者的帳號管理其實是一整個說複雜不複雜、說簡單也不簡單的程序,並不是註冊了,就直接開始使用的。與使用者帳號管理有關的,至少有以下幾個必要的功能:
- 註冊帳號:建立新帳號,總要有表單讓使用者填寫吧?
- E-mail驗證:使用者填了Email,就確定是他本人的嗎?總要寄封確認信,讓使用者從信箱收信來啟冊帳號吧?
- 登入帳號
- 忘記密碼處理流程:忘記密碼是要可以重置,並寄發新密碼到Email信箱的
- 帳號密碼管理:使用者總要可以修改密碼吧?
當然有些系統的設計,並不是用Email來認證,在此就不討論這些狀況了。上面至少就列了5點,這怎麼可能只用兩、三個API就串接起來?更別說這系統還有提供Facebook登入的功能了…
不同系統之間的登入串接,可以做成 開放授權 的方式讓其它的網站來作登入驗證,就像Facebook、PayPal的登入機制;也可以做成API,並將規格寫成內部文件,提供各系統的開發部門來作串接;但這整個流程是需要經過很嚴謹的系統分析,並將流程文件化,再來實作的。
使用者的帳號建立、登入與管理的機制任一個環節出了問題,就很容易使系統遭到入侵,接下來的影響就可大可小了,所以這類的登入機制,在各種開放授權平台上(如Facebook、Google +…),都有很嚴謹、複雜的溝通程序,又豈是幾小時就能搞定的小功能?
在客戶的要求下,我釋出了客戶要求的幾個API,果不其然在兩、三天內,客戶就回饋了一堆的問題:
- 註冊帳號怎麼沒法跳轉回到原本的網頁?(因為這個註冊網頁本來就是我目前執行專案的功能,又不是為第三方網站設計的註冊頁,哪可能你可以直接從第三方網頁跳過來註冊就可以使用?)
- 可不可以在註冊的時候,不要填寫某些資料?(因為在他的系統上用不到…但我這個專案需要這些資料丫~)
- Facebook登入後,怎麼不會跳轉回來?(因為這是我的登入頁,又不是誰都可以從任何地方登入的…)
- …
這些功能和問題,其實都可以解決,只是,是不是沒有一開始想的那麼單純了?如果這麼簡單,人家那些開放授權的系統幹嘛還要請那麼多工程師?
只能說:「想靠兩、三個API就整合多個系統的登入?會不會太兒戲了一點?」