0

我來自JavaScript背景,最近我正在學習服務器端。我認爲服務器端的控制器在與客戶端交互方面的比例是1比多。服務器端控制器如何處理來自客戶端的多個會話?

enter image description here

我有這個代碼在登錄:

@expose('/login/', methods=('GET', 'POST')) 
    def login_view(self): 
     if request.method == 'GET': 
      # Render template 
     if request.method == 'POST': 
      # Take email and password from form and check if 
      # user exists. If he does, log him in. 
      login.login_user(user) 

      # Store user_id in session for socketio use 
      session['user_id'] = login.current_user.id 

      # Redirect 

據我所知,會話詞典是像JavaScript的localStorage的對應,那麼,這是否意味着有一個獨特的控制器每個獨特的客戶?因爲那麼多個客戶端會覆蓋session.user_id,如果他們共享相同的控制器嗎?

回答

1

會話已創建,用戶通過身份驗證後會在客戶端維護狀態(在Cookie中)。

因此,當用戶使用電子郵件和密碼登錄時,服務器將識別(使用存儲在數據庫中的有效電子郵件和密碼進行一些檢查)。服務器現在可以在響應中使用令牌(可能有效期)來設置cookie。之後,來自該特定客戶端的HTTP請求將具有令牌,服務器將使用該令牌來識別用戶。

基本上,每個會話都維護在客戶端,控制器檢查服務器端的有效性。

相關問題