直接使用cookie
也是可以追踪用户的, 但是不安全, 所以比较好的做法为, 在第一次登录以后, 往客户端发送一个 cookie
, cookie
里面的 value
设置为session_id
, 发送请求到服务器的时候, 服务器有一个 session
使用[session_id: username]
来验证发送过来的cookie
这样的好处是:
- 服务端可以使用 session 来跟踪用户
- 客户端用户登录一次以后由于被设置了 cookie, 下次可以免去登录
具体流程为:
1, 第一访问登录页面, 提交登录表单信息
2, 服务端得到用户提交的登录数据, 设置
session, session[session_id] = user.username
3, 服务端返回 response 带上 cookie 信息
headers['Set-Cookie'] = f'user={session_id}'
4, 一个 current_user 函数, 可以用户从用户的 cookie 里得到 session_id, 与服务端匹配, 验证用户
session_id = request.cookies.get('user', '')
username = session.get(session_id, '游客')
5, 如果对应的 session_id 匹配成功, 说明用户处于登录状态, 可以被追踪, 否则用户没有登录
6, 用户如果关闭浏览器, cookie 不受影响一直保存在浏览器里(除非过期), 下次打开页面可以直接免登录
7, 只要服务器不关闭, 那么 session 里面的用户信息是永久保存的, 只要客户端设置了 cookie, 验证成功那么该用户就可以被追踪, 即处于登录成功的状态
示例代码可以参见: cookie&session