在控制器的一個具體方法我有中間件Auth
是在App\Http\Middleware\
中間件在Laravel
在我的內核我加入他想:
protected $routeMiddleware = [
'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,
'Groups' => \App\Http\Middleware\Groups::class,
'Auth' => \App\Http\Middleware\Auth::class,
];
該中間件包含
<?php
namespace App\Http\Middleware;
use Closure;
class Auth
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if(!auth()->check())
{
return abort(404);
}
return $next($request);
}
}
而且在我的控制器方法中,我使用
$this->middleware('Auth');
但是這根本不起作用。
而當我把我的'Auth' => \App\Http\Middleware\Auth::class,
並將它放入protected $middlewareGroups
就像\App\Http\Middleware\Auth::class,
它的工作原理。但是對於每一個頁面。所以當我沒有記錄它所有的時間abort404。
這裏有什麼問題? 我看不到,它看起來很好。
但這中間件不適合這種方法中,我有$this->middleware('Auth');
我沒有登錄,但頁面顯示爲正常工作。
而且應該abort404解僱因爲我不是在登錄
是什麼讓我錯了嗎?
您已經擁有了從股票Laravel中建立的那種中間件,您想仔細看看股票'auth'和'guest'中間件,它們是'$ routeMiddleware'數組中的項目0和4。 – Kyslik
@Kyslik這個工程,當我把它放入構造函數,爲什麼我不能直接放入方法? –