停止 CSRF 检查子域
Stopping CSRF checking for subdomains
对于我们的 Laravel 5.3 API,我想消除对 CSRF 令牌的需求,因为一切都由 OAuth2 和 JWT 处理。
目前 API 在子域上运行:api.example.com
我试过了,但它仍然需要 CSRF 令牌:
class VerifyCsrfToken extends BaseVerifier
{
protected $except = [
'api.*'
];
}
我还希望能够在 app.example.dev
上的主应用程序上进行随机路由测试时禁用 CSRF 保护,但将 'app.*'
添加到 $except
也不行。
可以这样做吗?
您可以覆盖 BaseVerifier
class 中的 shouldPassThrough
方法,其中它将支持 $except
中的子域,例如 api.yourdomain.com
/**
* Determine if the request has a URI that should pass through CSRF verification.
*
* @param \Illuminate\Http\Request $request
* @return bool
*/
protected function shouldPassThrough($request)
{
foreach ($this->except as $except) {
if (Str::is($except, $request->url())) {
// break out of CSRF check
return true;
}
}
return false;
}
对于我们的 Laravel 5.3 API,我想消除对 CSRF 令牌的需求,因为一切都由 OAuth2 和 JWT 处理。
目前 API 在子域上运行:api.example.com
我试过了,但它仍然需要 CSRF 令牌:
class VerifyCsrfToken extends BaseVerifier
{
protected $except = [
'api.*'
];
}
我还希望能够在 app.example.dev
上的主应用程序上进行随机路由测试时禁用 CSRF 保护,但将 'app.*'
添加到 $except
也不行。
可以这样做吗?
您可以覆盖 BaseVerifier
class 中的 shouldPassThrough
方法,其中它将支持 $except
中的子域,例如 api.yourdomain.com
/**
* Determine if the request has a URI that should pass through CSRF verification.
*
* @param \Illuminate\Http\Request $request
* @return bool
*/
protected function shouldPassThrough($request)
{
foreach ($this->except as $except) {
if (Str::is($except, $request->url())) {
// break out of CSRF check
return true;
}
}
return false;
}