【发布时间】:2016-06-13 19:45:42
【问题描述】:
我需要帮助解决我自己无法解决的问题。 我正在使用 Laravel 5.1,当我尝试启用 Authenticate Middleware 时收到此错误。
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'
我有 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);
}
}
还有内核:
protected $routeMiddleware = [
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'guest' => \Imuva\Http\Middleware\RedirectIfAuthenticated::class,
'auth' => \Imuva\Http\Middleware\Authenticate::class,
];
我从这里开始使用它:
class HomeController extends Controller {
public function __construct() {
$this->middleware('auth', ['only' => 'admin']);
}
我根本不知道会发生什么。感谢阅读
【问题讨论】:
-
似乎是保护对象被初始化而不是中间件。你能粘贴你的 Imua\Http\Middleware\Authenticate 类吗?
-
我已将其添加到主消息 Authenticate 但如果我没记错的话我没有从默认安装中触及它。
标签: php laravel middleware