Slim框架提供的“setCookie()”如果我在它后面使用“exit()”,将无法工作


`setCookie()` that Slim framework provides will not work if I use `exit()` after it

我需要使用 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();
});

上面的代码不是进行身份验证的好方法,但它表明了这一点。