我有Auth个是App\Http\Middleware\

在我的内核中,我像这样添加了他:

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被解雇,因为我没有被记录

是什么让我错了?

推荐答案

将中间件添加到$middlewareGroups时遇到的问题将在doc中解释

开箱即用的web中间件组将自动应用于

如果您只想让中间件在cotroller中执行一个操作,可以将中间件绑定到路由:

Route::get('yourRout', 'YourController@actionX')->middleware('auth');

也可以将其添加到控制器的构造函数中:

public function __construct()
{
    $this->middleware('auth', ['only' => ['edit']]);
}

或者你可以试试(从Laravel 5.3开始):

 public function __construct()
    {
        $this->middleware('auth')->only(['edit']);
    }

Laravel相关问答推荐

@vite指令在使用laravel vite构建后导致错误

Laravel将变量从模板到已发布的供应商模板

Vue 组件中的图像不适用于 Vite + Laravel

如何为 CMP 横幅安装谷歌同意脚本?

在 laravel 中查询此类数据的最佳做法是什么?

Eloquent: hasNot 带参数

在 VSCode 上调试 Laravel 应用程序

如何修复无效请求(不支持的 SSL 请求)

如何更改 Laravel5 中的视图文件夹?

Laravel Request::input 调用未定义的方法

使用限制排队 Guzzle 请求

Laravel 5.3 Electron邮件队列中不允许序列化关闭

计算laravel中查询返回的行数

如何在本地 Laravel Homestead 站点上获取 https 证书

日期验证 - 如何本地化/翻译字符串今天和明天

如何重定向到laravel上的公共文件夹

在 Laravel 应用程序中在哪里指定应用程序版本?

如何在 Laravel 或 Redis 中取消排队的作业(job)

Laravel 获取文件内容

如何判断是否连接到 Laravel 4 中的数据库?