gpt4 book ai didi

Laravel 中间件 'except' 规则不起作用

转载 作者:行者123 更新时间:2023-12-02 12:48:35 25 4
gpt4 key购买 nike

我有一个 Controller ,其构造函数中包含以下内容:

$this->middleware('guest', ['except' =>
[
'logout',
'auth/facebook',
'auth/facebook/callback',
'auth/facebook/unlink'
]
]);

“注销”规则(默认情况下存在)运行良好,但我添加的其他 3 条规则将被忽略。 routes.php 中的路由如下所示:

Route::group(['middleware' => ['web']],function(){

Route::auth();

// Facebook auth
Route::get('/auth/facebook', 'Auth\AuthController@redirectToFacebook')->name('facebook_auth');
Route::get('/auth/facebook/callback', 'Auth\AuthController@handleFacebookCallback')->name('facebook_callback');
Route::get('/auth/facebook/unlink', 'Auth\AuthController@handleFacebookUnlink')->name('facebook_unlink');
}

如果我在登录时访问 auth/facebookauth/facebook/callbackauth/facebook/unlink,我会被拒绝中间件并返回主页。

我尝试使用 / 指定“异常(exception)”规则,以便它们与 routes.php 中的路由完全匹配,但没有区别。知道为什么这些规则被忽略,而默认的“注销”规则受到尊重吗?

干杯!

最佳答案

您需要传递方法的名称而不是 URI。

<?php

namespace App\Http\Controllers;

class MyController extends Controller {
public function __construct() {
$this->middleware('guest', ['except' => [
'redirectToFacebook', 'handleFacebookCallback', 'handleFacebookUnlink'
]]);
}
}

从 Laravel 5.3 开始,你可以使用 Fluent 接口(interface)在 Controller 上定义中间件,这看起来比使用多维数组更干净。

<?php

$this->middleware('guest')->except('redirectToFacebook', 'handleFacebookCallback', 'handleFacebookUnlink');

关于Laravel 中间件 'except' 规则不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34711134/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com