服务器端控制器如何处理来自客户端的多个会话?
How server-side controllers handle multiple sessions from client?
我有 JavaScript 背景,最近正在学习服务器端。我的印象是服务器端的控制器在与客户端交互方面是一对多的比例。
我有这个登录代码:
@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 吗?
创建会话,在用户通过身份验证后在客户端(在 cookie 中)维护状态。
因此,当用户使用电子邮件和密码登录时,服务器将识别(使用数据库中存储的有效电子邮件和密码进行一些检查)。服务器现在可以在响应中使用令牌(和可能的到期时间)设置 cookie。之后,来自该特定客户端的 HTTP 请求将有一个令牌,服务器将使用该令牌来识别用户。
基本上,每个会话都在客户端维护,控制器在服务器端检查有效性。
我有 JavaScript 背景,最近正在学习服务器端。我的印象是服务器端的控制器在与客户端交互方面是一对多的比例。
我有这个登录代码:
@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 吗?
创建会话,在用户通过身份验证后在客户端(在 cookie 中)维护状态。
因此,当用户使用电子邮件和密码登录时,服务器将识别(使用数据库中存储的有效电子邮件和密码进行一些检查)。服务器现在可以在响应中使用令牌(和可能的到期时间)设置 cookie。之后,来自该特定客户端的 HTTP 请求将有一个令牌,服务器将使用该令牌来识别用户。
基本上,每个会话都在客户端维护,控制器在服务器端检查有效性。