Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel 5.2多表身份验证和中间件一起工作不正常_Php_Laravel 5.2_Laravel Middleware - Fatal编程技术网

Php Laravel 5.2多表身份验证和中间件一起工作不正常

Php Laravel 5.2多表身份验证和中间件一起工作不正常,php,laravel-5.2,laravel-middleware,Php,Laravel 5.2,Laravel Middleware,我正在使用Laravel5.2多表(用户,管理员)身份验证功能来使用两个表,一个用于用户,另一个用于管理员。除中间件功能外,所有功能都正常工作。默认的“auth”(Authenticate.php)不起作用,我制作了一个自定义的“auth.super_admin”(SuperAdminMiddleware.php),用于检查用户的管理和结果是否相同。这是我的auth.php文件 'defaults' => [ 'guard' => 'web', 'pa

我正在使用Laravel5.2多表(用户,管理员)身份验证功能来使用两个表,一个用于用户,另一个用于管理员。除中间件功能外,所有功能都正常工作。默认的“auth”(Authenticate.php)不起作用,我制作了一个自定义的“auth.super_admin”(SuperAdminMiddleware.php),用于检查用户的管理和结果是否相同。这是我的auth.php文件

'defaults' => [
        'guard' => 'web',
        'passwords' => 'users',
    ],
    'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'users',
        ],

        'api' => [
            'driver' => 'token',
            'provider' => 'users',
        ],
        'admins' => [
            'driver'   => 'session',
            'provider' => 'admins'
        ]
    ],
以下是Authenicate中间件和SuperAdminMiddleware方法:

Authenticate.php
public function handle($request, Closure $next, $guard = null)
    {
         if (Auth::guard($guard)->guest()) {
            if ($request->ajax() || $request->wantsJson()) {
                return response('Unauthorized.', 401);
            } else {
                return redirect()->guest('login');
            }
        }

        return $next($request);
    }

SuperAdminMiddleware.php
public function handle($request, Closure $next)
    {

        if(\Auth::guard('admins')->check())
        {
            return $next($request);
        }
        return redirect('/');
    }

所以,当我在控制器的构造函数中使用“auth”时,它不起作用,并调用相应的方法。我做错了什么或错过了什么?

事实上我已经解决了这个问题。这是解决办法

Authenticate.php


public function handle($request, Closure $next, $guard = null)
    {
    /*
    |--------------------------------------------------------------------------
    | Authenticate Middleware
    |--------------------------------------------------------------------------
    |
    | This middleware is for checking whether user is from user table .
    | and authenticated.
    |
    */
        if (!Auth::user()) {
            return redirect('/');
        }else
        {
            return $next($request);

        }
    }
SuperAdminMiddleware.php

/*
    |--------------------------------------------------------------------------
    | Authenticate Middleware(Super Admin check)
    |--------------------------------------------------------------------------
    |
    | This middleware is for checking whether user is from admin table 
    | and super_admin .
    |
    */
    public function handle($request, Closure $next)
    {


        if (\Auth::guard('admins')->user()) {
            if(\Auth::guard('admins')->user()->type == 'super_admin')
                return $next($request);

            return redirect('/');
        }
        return redirect('/');
    }

也许我遗漏了您正在绘制的图片的某些内容,但我不相信您可以在同一个文件中两次定义handle方法。Authenticate.php middlware中没有一个方法,SuperAdminMiddleware.php文件中也没有其他方法@杰里米扬德森