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 请求的不记名令牌。所以这里你应该做什么
- 登录并获取用户数据和令牌
- 将令牌存储在前端并将其用作下一个请求的不记名令牌。
- 注销并销毁令牌。
可以使用
在laravel后端的任何地方轻松获取用户数据
Auth::user()
或者如果您只需要用户 ID,则使用
Auth:id()
如果您不希望未经身份验证的用户使用您的端点,请不要忘记使用身份验证中间件限制您的端点
我是 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 请求的不记名令牌。所以这里你应该做什么
- 登录并获取用户数据和令牌
- 将令牌存储在前端并将其用作下一个请求的不记名令牌。
- 注销并销毁令牌。
可以使用
在laravel后端的任何地方轻松获取用户数据Auth::user()
或者如果您只需要用户 ID,则使用
Auth:id()
如果您不希望未经身份验证的用户使用您的端点,请不要忘记使用身份验证中间件限制您的端点