欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

Middleware except not working 中间件 除外 不工作 有大用 有大大用

中间件除外        

使用  php artisan route:list     这个看看, 有可能看到意外的收获


Laravel版本:5.2.29            

我一直在尝试过滤对AuthController的一些请求。通常,我只希望login方法由guest执行,而所有其他方法应仅由登录的admin用户执行。            

我立即想到将auth中间件分配给AuthController的构造函数,如下所示:            

public function __construct()
    {
        $this->middleware('auth', ['except' => 'login']);


    }
           

它根本没有用。相反,我被迫在路由文件中执行以下操作:            

//Route::auth();
Route::get('login', 'Auth\AuthController@showLoginForm');
Route::post('login', 'Auth\AuthController@login');
Route::group(['middleware' => 'auth'], function () {

    // Authentication Routes...
    $this->get('logout', 'Auth\AuthController@logout');
    // Registration Routes...
    $this->get('register', 'Auth\AuthController@showRegistrationForm');
    $this->post('register', 'Auth\AuthController@register');
    // Password Reset Routes...
    $this->get('password/reset/{token?}', 'Auth\PasswordController@showResetForm');
    $this->post('password/email', 'Auth\PasswordController@sendResetLinkEmail');
    $this->post('password/reset', 'Auth\PasswordController@reset');

});
           

我不知道为什么第一种方法不起作用。我想念什么?            

鲍比布曼                    
50级                        
bobbybouwmann1年之前                            

运行时,   


php artisan route:list                     

                        

您可以看到应用于路由的所有中间件。也许您的路线也有来自某些团体的额外中间件。我将开始在那寻找;)                        

cac                    
1级                        
cac1年之前                        

我确实将代码反转回了第一种方法,并且在您的提示下,我能够观察到确实添加了登录名(帖子)作为例外。但是,login(get)仍在使用auth中间件,因为有一个名为showLoginForm的方法(也是注销),但我忘记在该方法中添加。                        

因此,这里是解决方法:                        

  public function __construct() 
{
        $this->middleware('auth', ['except' => ['login', 'showLoginForm', 'logout']]); 
}
                       


                       

来自  https://laracasts.com/discuss/channels/laravel/middleware-except-not-working

普通分类: