我有一个表单,只有在调用是由 ajax 发出时才要授权,所以我尝试了
....
//MyRequest authorize function
public function authorize()
{
return $this->ajax();
}
但是当我进行ajax调用后,在控制台中它显示为"This action is unauthorized."
,那么我如何检测调用是否是ajax并返回true
,否则返回false
?
这是中间件的工作。
php artisan make:middleware IsAjaxRequest
In app/Http/Middleware/IsAjaxRequest.php
<?php
namespace AppHttpMiddleware;
class IsAjaxRequest
{
public function handle($request, Closure $next)
{
// Check if the route is an ajax request only route
if (!$request->ajax()) {
abort(405, 'Unauthorized action.');
}
return $next($request);
}
}
不要忘记在 app/Http/Kernel 中注册您的中间件.php通过在 $routeMiddleware 数组中添加以下内容。
'ajax' => AppHttpMiddlewareIsAjaxRequest::class
然后,您可以将其添加到处理 Ajax 调用的任何路由中
Route::get('users', 'UserController@method')->middleware('ajax');