dongsimu4422 2016-06-10 09:35
浏览 51

在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.

    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

    <?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

  • 写回答

1条回答 默认 最新

  • douyi9787 2016-06-10 13:54
    关注

    I think you are mixing up everything you found regarding middlewares.

    1. Why calling $this->middleware('auth', ['only' => 'admin']); on your constructor? Have a read here
    2. Your handle method signature is : public function handle($request, Closure $next). You are passing an array as well?
    3. How do you mange your users roles?
    评论

报告相同问题?

悬赏问题

  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么