簡介
延續 Laravel 客製化使用者驗證功能-增加使用者資料欄位 的內容,在該篇文章中提到了新增一個 status 欄位用來判斷使用者是否停權,使得我們可以阻擋被停權的使用者登入系統。
透過這樣的設計,我們可以在後續開發的功能中視需要對使用者進行停權或復原的作業。
然而 Laravel 預設的登入驗證流程只有判斷登入名稱是否存在,然後比較密碼是否正確而已,因此在本篇中將對登入驗證的流程進行修改。
延續 Laravel 客製化使用者驗證功能-增加使用者資料欄位 的內容,在該篇文章中提到了新增一個 status 欄位用來判斷使用者是否停權,使得我們可以阻擋被停權的使用者登入系統。
透過這樣的設計,我們可以在後續開發的功能中視需要對使用者進行停權或復原的作業。
然而 Laravel 預設的登入驗證流程只有判斷登入名稱是否存在,然後比較密碼是否正確而已,因此在本篇中將對登入驗證的流程進行修改。
在 Laravel 初探 - 使用者驗證 中提到了 Laravel 預設的使用者驗證相關功能的使用方式。
本篇將要來介紹如何客製化這些功能,例如將原本以 email 來登入的方式改成用一個登入帳號來登入、提供使用者名稱來做為公開顯示用。
即登入用的帳號和公開顯示的使用者名稱分開,如此可避免其他使用者透過公開的 email 或使用者名稱來嘗試登入他人的帳號。
此外還新增一個狀態欄位來判斷一個帳號是否被停權,可用於登入時的檢測。
很多的網站應用程式都需要能辨識使用者,以記錄使用者的操作以及為不同身分的使用者提供不同的功能。為了要達成這個需求,網站應用程式必須要先驗證使用者後才能繼續進一步的操作。
由於這個驗證使用者的功能是如此的常見,因此很多框架、套件都有提供這個功能。本篇將介紹如何使用 Laravel 內建的使用者驗證功能。
HTML 5 Server Send Event (SSE) 是一種將資料從伺服器端推送到瀏覽器端的技術。與 Ajax polling 這種多次發送 HTTP 請求的的方式相比,SSE 只需要一次的 HTTP 請求,因此能減少連線次數及傳輸的資料量、降低伺服器的負擔,並讓使用者得到更即時的資訊。
而與 Web Socket 相較,它沿用 HTTP 協定,不需要再額外建立專門處理其他協定的伺服端程式,直接沿用原本的網頁伺服器(如:Apache, Nginx)即可。所以無論是在程式開發上還是維運管理上都要簡易很多。
因此,如果只需要單向的從伺服器到瀏覽器的推送,就不需要使用 Web Socket,可以只使用 SSE。接續 Redis Notification 中提到的 Redis 通知 PHP 程式的技術,本篇將展示如何使用 SSE 將 Redis 的更新同步到瀏覽器,並使用 ECMAScript 2015 的新功能來組織程式。
在實現事件驅動設計的過程中,能夠讓資料庫在異動資料時自動發出通知是一個重要的環節,如此一來就不需要有另外一支程式不斷去查詢資料庫的異動,可以節省系統資源。
本篇探討將使用 Redis 的 keyspace notification 功能來實現資料異動的即時通知,並且以 PHP 程式來實作。
本篇將會以一個線上購物網站的物品庫存清單為例,展示如何實作即時顯示當前貨品庫存量的功能。