仅当表单请求是 ajax 调用时,才对其进行授权



我有一个表单,只有在调用是由 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');

最新更新