我正在Wordpress中构建一个REST API,并希望使用安全Cookie进行身份验证。
我的问题是服务器如何确定cookie的所有者,以及需要从客户端传递哪些数据才能为该客户端检索cookie?
我可以在服务器上设置cookie,但在下一次调用时,客户端的cookie无法访问。我假设需要传递某种类型的头,以便服务器识别设置cookie的是同一个用户。
我真的没有一些代码要展示,因为问题更一般地是服务器识别客户端和访问安全cookie所需的内容,但基本上我想做的是:
JavaScript语言:
function setCookie() {
const res = await fetch('/login', {username, password});
console.log(await res.json()); // Success
}
function checkCookie() {
const res = await fetch('/check-cookie');
console.log(await res.json()); // False
}
PHP:
<?php
// Hooked to /login endpoint
function login($request) {
// Check credentials, then set cookie:
$cookie = setCookie('cookie-name', 'some-value', 0, '/', '', true, true);
return $cookie ? 'Success' : 'Failed';
}
// Hooked to /check-cookie endpoint
function checkCookie() {
return isset($_COOKIE['cookie-name']);
}
因此,第一次登录在我的尝试是成功的,但检查任何其他请求的身份验证是不成功的。
1条答案
按热度按时间pengsaosao1#
免责声明:使用cookie auth而不使用nonce会受到CSRF攻击,不建议使用!
要通过API使用标准会话cookie,您只需
start_session()
,验证用户并将其user_id
保存在$_SESSION
中,使其成为每个额外请求的当前用户。这应该可以让你开始。如果您不想干扰常规会话cookie(和/或只想设置HTTP),请为
session_start()
添加适当的选项。再次:我不建议这样做!