代码之家  ›  专栏  ›  技术社区  ›  Carlos Salazar

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

  •  1
  • Carlos Salazar  · 技术社区  · 8 年前

    我有一个表单,只有当调用是由ajax发出时,我才想授权它,所以我尝试了

    ....
    //MyRequest authorize function
    public function authorize()
    {
        return $this->ajax();
    }
    

    但是在我执行ajax调用之后,在控制台中显示 "This action is unauthorized." ,那么我如何检测调用是否是ajax并返回 true ,否则返回 false 是吗?

    1 回复  |  直到 8 年前
        1
  •  2
  •   Mickael Amar    8 年前

    这是一份工作 middlewares 是的。

    php artisan make:middleware IsAjaxRequest
    

    在app/http/middleware/isajaxrequest.php中

    <?php
    
    namespace App\Http\Middleware;
    
    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中注册中间件,方法是在$routemidleware数组中添加以下内容。

    'ajax' => \App\Http\Middleware\IsAjaxRequest::class
    

    然后可以将其添加到处理ajax调用的任何路由中

    Route::get('users', 'UserController@method')->middleware('ajax');
    
    推荐文章