简体   繁体   English

Laravel 5.1中的身份验证中间件出现问题

[英]Trouble with Authenticate Middleware in Laravel 5.1

I need help with a problem that I cannot solve by myself. 对于我自己无法解决的问题,我需要帮助。 I'm using Laravel 5.1 and when I try to enable the Authenticate Middleware I receive this error. 我正在使用Laravel 5.1,当我尝试启用身份验证中间件时,收到此错误。

    ErrorException in Manager.php line 137:
call_user_func_array() expects parameter 1 to be a valid callback, class 'Illuminate\Auth\Guard' does not have a method 'handle'

I have the middleware as it comes by default with Laravel, also the kernel.php, both look like this 我有Laravel默认提供的中间件,还有kernel.php,两者都看起来像这样

    <?php

namespace Imuva\Http\Middleware;

use Closure;
use Illuminate\Contracts\Auth\Guard;

class Authenticate {

    /**
     * The Guard implementation.
     *
     * @var Guard
     */
    protected $auth;

    /**
     * Create a new filter instance.
     *
     * @param  Guard  $auth
     * @return void
     */
    public function __construct(Guard $auth) {
        $this->auth = $auth;
    }

    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next) {
        if ($this->auth->guest()) {
            if ($request->ajax()) {
                return response('Unauthorized.', 401);
            } else {
                return redirect()->guest('auth/login');
            }
        }

        return $next($request);
    }

}

And the kernel: 和内核:

protected $routeMiddleware = [
        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
        'guest' => \Imuva\Http\Middleware\RedirectIfAuthenticated::class,
        'auth' => \Imuva\Http\Middleware\Authenticate::class,
    ];

And I use it from here: 我从这里使用它:

class HomeController extends Controller {
public function __construct() {
   $this->middleware('auth', ['only' => 'admin']);
}

I dont know what could be happening at all. 我完全不知道会发生什么。 Thanks for reading 谢谢阅读

I think you are mixing up everything you found regarding middlewares. 我认为您正在混淆关于中间件的所有发现。

  1. Why calling $this->middleware('auth', ['only' => 'admin']); 为什么调用$ this-> middleware('auth',['only'=>'admin']); on your constructor? 在你的构造函数上? Have a read here 在这里阅读
  2. Your handle method signature is : public function handle($request, Closure $next). 您的handle方法签名是:公共函数handle($ request,Closure $ next)。 You are passing an array as well? 您也要传递数组吗?
  3. How do you mange your users roles? 您如何管理用户角色?

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM