我需要使用 ajax 请求来执行登录。下面是请求转到的函数:
function loginAdmin() {
$app = 'Slim'Slim::getInstance();
if (auth()) {
$app->setCookie('admin', TRUE);
exit(TRUE);
}
exit(NULL);
}
我将处理 ajax 响应以查看它是否属实。但是饼干不会被设置。如果我删除exit(TRUE)
可以设置cookie。
我已经阅读了 Slim 的源代码,setCookie()
函数调用 'Slim'Http'Cookies::setCookie()
,它将键和值设置为$data
成员。但我不确定饼干何时发送。
但我仍然不知道exit
功能如何影响setCookie
功能。
不能使用 exit()
发送响应。您应该在路由中echo()
响应。例如:
function loginAdmin() {
$app = 'Slim'Slim::getInstance();
if (auth()) {
$app->setCookie('admin', TRUE);
return 1;
}
return 0;
}
$app->get('/foo', function {
echo loginAdmin();
});
上面的代码不是进行身份验证的好方法,但它表明了这一点。