1. 程式人生 > >laravel框架學習(四)執行建立中介軟體後,提示無法找到該中介軟體的解決方法

laravel框架學習(四)執行建立中介軟體後,提示無法找到該中介軟體的解決方法

按照官方提供的文件:http://laravelacademy.org/post/7812.html


1.建立中介軟體:先宣告中介軟體,

php artisan make:middleware AdminMiddleware

會自動在app/Http/Middleware 資料夾下生成 AdminMiddleware的中介軟體檔案:如下

namespace App\Http\Middleware;

use Closure;
use Auth;
class AdminMiddleware
{
    /**
     * 宣告中介軟體,驗證邏輯可以根據自己需求寫
 
* @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { //中介軟體處理是否需要登入許可權 if( !Auth::guard('admin')->check()){ return redirect('/admin/login'); } return
$next($request); } }

2.然後繫結到app/Http/Kernel.php 檔案中新增,如果需要使用路由中介軟體,就載入到

protected $routeMiddleware = [
    //新增中介軟體
     'admin.auth'=> AdminMiddleware::class,

    'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
    'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::
class, 'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class, 'can' => \Illuminate\Auth\Middleware\Authorize::class, 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, ];

3.再輸入該路由呼叫時,必須把AdminMiddleware的名稱空間寫上,不然會報錯,造成無法使用


解決方法:就是在app/Http/Kernel.php該檔案中加上

namespace App\Http;

use App\Http\Middleware\AdminMiddleware;  //引入新建的中介軟體的方法

在控制器中呼叫中介軟體


    public function __construct(){
        //執行中介軟體,驗證是否登入 ,排除loginForm,login兩個不需要驗證的方法
        $this->middleware('admin.auth')->except(['loginForm','login']);
    }