【问题标题】:Laravel PHP : Issue with Custom Middleware DirectoryLaravel PHP:自定义中间件目录的问题
【发布时间】:2016-03-30 23:51:36
【问题描述】:

为了使用中间件组织我的源代码,我想将所有身份验证中间件放在我创建的 /App/Http/Middleware/Auth 文件夹中。作为测试,我在 Auth 文件夹中创建了 auth_none.php。

<?php
namespace App\Httpd\Middleware\Auth;

use Closure;

class access_none {
protected $session;
protected $key;

public function __construct() {
    $this->session = $_COOKIE['session'];
    $this->key = $_COOKIE['key'];
}

public function handle($request, Closure $next) {
    return $next($request);
}
}

那是我的 auth_none.php

还有我的 Kernel.php

<?php

namespace App\Http;

use Illuminate\Foundation\Http\Kernel as HttpKernel;

class Kernel extends HttpKernel
{
/**
 * The application's global HTTP middleware stack.
 *
 * These middleware are run during every request to your application.
 *
 * @var array
 */
protected $middleware = [
    \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class
];

/**
 * The application's route middleware groups.
 *
 * @var array
 */
protected $middlewareGroups = [
    'web' => [
        \App\Http\Middleware\EncryptCookies::class,
        \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
        \Illuminate\Session\Middleware\StartSession::class,
        \Illuminate\View\Middleware\ShareErrorsFromSession::class,
        \App\Http\Middleware\VerifyCsrfToken::class,
    ],

    'api' => [
        'throttle:60,1',
    ],
];

/**
 * The application's route middleware.
 *
 * These middleware may be assigned to groups or used individually.
 *
 * @var array
 */
protected $routeMiddleware = [
    'https' => \App\Http\Middleware\Https::class,
    'auth.none' => \App\Http\Middleware\Auth\access_none::class
];
}

这是我在页面上遇到的错误。

    ReflectionException in Container.php line 738:
Class App\Http\Middleware\Auth\access_none does not exist
in Container.php line 738
at ReflectionClass->__construct('App\Http\Middleware\Auth\access_none') in Container.php line 738
at Container->build('App\Http\Middleware\Auth\access_none', array()) in Container.php line 633
at Container->make('App\Http\Middleware\Auth\access_none', array()) in Application.php line 697
at Application->make('App\Http\Middleware\Auth\access_none') in Pipeline.php line 123
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in Https.php line 9
at Https->handle(object(Request), object(Closure))
at call_user_func_array(array(object(Https), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103
at Pipeline->then(object(Closure)) in Router.php line 726
at Router->runRouteWithinStack(object(Route), object(Request)) in Router.php line 699
at Router->dispatchToRoute(object(Request)) in Router.php line 675
at Router->dispatch(object(Request)) in Kernel.php line 246
at Kernel->Illuminate\Foundation\Http\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 52
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in CheckForMaintenanceMode.php line 44
at CheckForMaintenanceMode->handle(object(Request), object(Closure))
at call_user_func_array(array(object(CheckForMaintenanceMode), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103
at Pipeline->then(object(Closure)) in Kernel.php line 132
at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 99
at Kernel->handle(object(Request)) in index.php line 54

【问题讨论】:

    标签: php laravel middleware


    【解决方案1】:

    您的命名空间中有错字。

    改变

    namespace App\Httpd\Middleware;
    

    namespace App\Http\Middleware\Auth;
    

    在 access_none 类中。

    延伸阅读:What does PSR-0 stand for?

    【讨论】:

    • 我做到了。还是一样的
    • 您编辑了您的帖子,但错字仍然存在:尝试将 Httpd 更改为 Http
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-09
    • 1970-01-01
    • 2015-02-15
    • 2020-06-12
    • 1970-01-01
    • 2013-01-04
    • 1970-01-01
    相关资源
    最近更新 更多