laravel框架學習(四)執行建立中介軟體後,提示無法找到該中介軟體的解決方法
阿新 • • 發佈:2018-12-05
按照官方提供的文件: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']); }