gpt4 book ai didi

api - 在 Laravel 4 API 中完全禁用 cookie

转载 作者:行者123 更新时间:2023-12-04 02:53:01 28 4
gpt4 key购买 nike

我正在使用 Laravel 构建一个 RESTful API。我使用基本 HTTP 身份验证( Authenticate header ),并带有此过滤器:

Route::filter('auth', function()
{
$credentials = ['email' => Request::getUser(), 'password' => Request::getPassword()];

if (!Auth::once($credentials)) {
$response = ['error' => true, 'message' => 'Unauthorized request'];
$code = 401;
$headers = ['WWW-Authenticate' => 'Basic'];

return Response::json($response, $code, $headers);
}
});

它可以工作,但 Laravel 然后尝试为用户设置 cookie(发送 Set-Cookie header )。我尝试设置 session.driver array 的配置 key ,才看到它现在发送了 Set-Cookie: laravel_session=deleted东西。

我如何才能完全禁用此功能 Set-Cookie头?

谢谢你。

最佳答案

对于无状态 API,没有 cookie 和干净的 header ,以下工作:

Route::filter('auth.basic', function()
{
Config::set('session.driver', 'array');
return Auth::onceBasic();
});

请注意,以上使用 Auth::onceBasic() 出于某种原因仍然发送“Set-Cookie” header 。根据文档 onceBasic auth 是无状态的;也许 cookie 是出于信息目的而发送的,是 Debug模式的副作用,或者它可能是一个错误。无论哪种方式 Config::set(...) 仍然需要。使用此过滤器快速 curl 路由将返回以下 header :
HTTP/1.1 200 OK
Date: Wed, 12 Feb 2014 02:34:26 GMT
Server: Apache/2.4.6 (Ubuntu)
X-Powered-By: PHP/5.5.3
Cache-Control: no-cache
X-Frame-Options: SAMEORIGIN
Transfer-Encoding: chunked
Content-Type: application/json

Auth::onceBasic() 似乎是无状态 REST API 的好方法。每个客户端请求都经过身份验证,并且在此方法中不使用 session cookie。

备注上述过滤器未捕获的其他路由仍将设置 cookie(并发送“Set-Cookie” header )。因此,此解决方案适用于无状态 API 和有状态 Web 访问/管理的常见情况。

关于api - 在 Laravel 4 API 中完全禁用 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16415369/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com