佇列非同步執行的時候是無法使用SESSION的,那麼登入還能使用佇列嗎?如果能如何處理cookie和session的對應關係?
走同样的路,发现不同的人生
錄還能使用隊列嗎?
登入通常是個同步過程,用佇列不是不行,只是會增加複雜性。
同步的登入過程就是讀取資料庫,判斷帳號密碼正確,設定session,能在一個HTTP請求裡搞完。
換成異步,我只能想到下面這種方法:
客戶端產生隨機token
客戶端把token、帳號、密碼寄給伺服器
伺服器在redis中記錄這個token還沒登入成功
伺服器把把token、帳號、密碼放到佇列處理
隊列處理,如果帳號正確,redis中的token標記為成功,否則標記為失敗
客戶端在伺服器和佇列處理的過程中一直用另一個介面輪詢看token是否登入成功,成功的話以後的請求都帶上token,否則客戶端登入失敗。
所以應該盡快完成同步的登入過程,把登入後需要的一些操作(發郵件通知等等)放隊列,而不是把整個登入過程放隊列。
登入通常是個同步過程,用佇列不是不行,只是會增加複雜性。
同步的登入過程就是讀取資料庫,判斷帳號密碼正確,設定session,能在一個HTTP請求裡搞完。
換成異步,我只能想到下面這種方法:
客戶端產生隨機token
客戶端把token、帳號、密碼寄給伺服器
伺服器在redis中記錄這個token還沒登入成功
伺服器把把token、帳號、密碼放到佇列處理
隊列處理,如果帳號正確,redis中的token標記為成功,否則標記為失敗
客戶端在伺服器和佇列處理的過程中一直用另一個介面輪詢看token是否登入成功,成功的話以後的請求都帶上token,否則客戶端登入失敗。
所以應該盡快完成同步的登入過程,把登入後需要的一些操作(發郵件通知等等)放隊列,而不是把整個登入過程放隊列。