服务器端控制器如何处理来自客户端的多个会话?

时间:2017-06-03 01:44:50

标签: javascript python-2.7 model-view-controller flask flask-restful

我来自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 个答案:

答案 0 :(得分:1)

创建会话后,在用户通过身份验证后,在客户端(在cookie中)维护状态。

因此,当用户使用电子邮件和密码登录时,服务器将识别(使用存储在数据库中的有效电子邮件和密码进行一些检查)。服务器现在可以在响应中使用令牌(以及可能的到期时间)设置cookie。之后,来自该特定客户端的HTTP请求将具有令牌,服务器将使用该令牌来识别用户。

基本上,每个会话都在客户端维护,控制器在服务器端检查有效性。