搜索中心
搜索中心 搜索快照

开发必看 - 请求会话保持机制

在Web应用程序中,我们经常要跟踪用户身份。当一个用户登录成功后,如果他继续访问其他页面,程序需要继续记录他的身份。

HTTP协议是一个无状态协议,即Web应用程序无法区分收到的两个HTTP请求是否是同一个浏览器发出的。为了跟踪用户状态,服务器可以向浏览器分配一个唯一ID,并以Cookie的形式发送到浏览器,浏览器在后续访问时总是附带此Cookie,这样,服务器就可以识别用户身份。

Web 功能组

Web 目录中的请求,通过使用 Laravel 自带的 Session 机制,可以很方便的管理会话。后台只需要通过如下方法获取:

  • Session::get 获取会话变量
  • Session::put 设置会话变量
  • Session::forget 删除会话变量

具体可参考 Laravel Session

Api 功能组

Api目录中的请求,需要携带 api-token 请求头。

  • 第一次发起请求该值留空即可,返回的响应头中会在服务端生成 api-token
  • 在所有接口交互过程中,当响应头中存在 api-token 时,需要覆盖客户端的 api-token 值。
  • 通常第一个请求接口无需携带 api-token 信息,如配置接口 /api/config 、登录接口 /api/login

具体逻辑可参考 SessionMiddleware.php

如何控制 Cookie 信息

Laravel 的 Cookie 配置信息配置文件位于 config/session.php,具体可参考以下几个配置

  • lifetime:会话有效期,直接控制 Cookie 的有效期,单位分钟,默认为 120 表示 2 小时
  • expire_on_close:关闭浏览器是否立即过期
  • path:Cookie 的 Path
  • domain:Cookie 的 域名

如何关闭 Cookie 加密功能

系统默认的Cookie是加密的,如果不需要加密,可以禁用 Cookie 的加密中间件。

文件位于:app/Http/Kernel.php

注释掉Cookie加密中间件 \Illuminate\Cookie\Middleware\EncryptCookies::class

查看原文
QQ
微信
客服