在控制器的一个具体方法我有中间件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这个工程,当我把它放入构造函数,为什么我不能直接放入方法? –