laravel 密室,从 cookie 中识别用户

laravel sanctum, identify user from cookie

我是 larravel 新手,使用 laravel sanctum 构建一个应用程序,会话驱动程序是 cookie。

laravel 应用程序部署在 caddy 后面,我启用了 caddy 日志。日志格式是json,我看到它包含了每个请求头,并且记录了cookie信息,所以我想知道我是否可以通过cookie识别用户,我尝试解码cookie但失败了,有什么方法可以通过 cookie 识别用户?

这是日志格式

{
    "level": "info",
    "ts": 1648864255.073147,
    "logger": "http.log.access.log5",
    "msg": "handled request",
    "request": {
        ...
        "headers": {
            "Accept": [
                "application/json, text/plain, */*"
            ],
            "X-Xsrf-Token": [
                ".....yJpdiI6Ijh6bjVZMXUvOFlkR3V1U....."
            ],

            "Cookie": [
                "XSRF-TOKEN=...eyJpdiI6Ijh6bjVZMXUvOFlkR3V1UE....9"
            ]
        }
    },
    "resp_headers": {
        "Set-Cookie": [
            "XSRF-TOKEN=hbHVlIjoiOHN6L1BXa2N; expires=Sat, 02-Apr-2022 03:50:55 GMT; Max-Age=7200; ...",
            "card_session=2IzTC9BbTEydW5NUDEvd016aVhlOWp; expires=Sat, 02-Apr-2022 03:50:55 GMT; Max-Age=7200; ...",
            "hkx3q7J7TeLVf3hV9XSaDiwScSS7rUIPP7kcge7f=eyJpdiI6RzlOeEN5eUhxUVE4OUZpMkFmSmYSIsInRhZyI6IiJ9; expires=Sat, 02-Apr-2022 03:50:55 GMT; Max-Age=7200; ..."
        ],
        ..
    }
}
``

我真的很奇怪为什么你需要通过 cookie 来了解用户。

但是因为你是 laravel 的新手,我认为你使用 laravel sanctum 作为验证器是完全错误的。

使用 laravel sanctum 时,它将生成令牌以用作下一个 API 请求的不记名令牌。所以这里你应该做什么

  1. 登录并获取用户数据和令牌
  2. 将令牌存储在前端并将其用作下一个请求的不记名令牌。
  3. 注销并销毁令牌。

可以使用

在laravel后端的任何地方轻松获取用户数据
Auth::user()

或者如果您只需要用户 ID,则使用

Auth:id()

如果您不希望未经身份验证的用户使用您的端点,请不要忘记使用身份验证中间件限制您的端点