对于我们的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
不起作用。
是否可以这样做?
答案 0 :(得分:1)
您可以覆盖shouldPassThrough
类中的BaseVerifier
方法,其中包含$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;
}