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