2017-06-13 48 views
0

我有一個受保護的航線組:保護與身份驗證的中間件部分航線,但留下其他未受保護的

Route::group(['prefix' => 'member', 'middleware' => 'auth'], function() { 
    Route::get('/')->name('member.home')->uses('[email protected]'); 
    Route::get('show')->name('member.show')->uses('[email protected]'); 
    // ...various additional protected member routes... 
}); 

不過,我不應該被保護的兩條路線:

Route::get('member/pay')->name('member.pay')->uses('[email protected]'); 
Route::get('member/confirm/{payment}')->name('member.confirm')->uses('[email protected]'); 

只要'middleware' => 'auth'適用於該單獨的路線組,所有member前綴路線即使未放入組中也會被其覆蓋。

我試過在受保護的路由組上面和下面移動未受保護的路由,但我仍然得到401 unauthorized,除非我完全刪除中間件。

這不影響我的任何其他路線......只有前綴爲member的路線。

如何從auth中排除這兩條路由?

回答

0

Route::group(['prefix' => 'member'], function() { 
    Route::get('/')->name('member.home')->uses('[email protected]')->middleware('auth'); 
    Route::get('show')->name('member.show')->uses('[email protected]')->middleware('auth'); 
    // 
    Route::get('member/pay')->name('member.pay')->uses('[email protected]'); 
    Route::get('member/confirm/{payment}')->name('member.confirm')->uses('[email protected]'); 
}); 
0

一種方法怎麼會從路由組中刪除中間件分配,而是在分配給您的MemberController構造中間件。這樣,您可以排除不應該應用的方法,如下所示:

class MemberController extends Controller 
{ 
    /** 
    * Instantiate a new controller instance. 
    * 
    * @return void 
    */ 
    public function __construct() 
    { 
     $this->middleware('auth')->except(['pay', 'confirm']); 
    } 
} 
+0

我只是檢查構造見狀後,發現了'$這個 - >中間件(「權威性」);'線是在'MemberController'這就解釋了爲什麼所有成員的路線受到保護。刪除它解決了問題。 – eComEvo

0

使用像這樣的嵌套組。

Route::group([ 'prefix' => 'member' ], function() { 
    // Protected routes 
    Route::group([ 'middleware' => 'auth' ], function() { 
     Route::get('/', '[email protected]')->name('member.home'); 
     Route::get('show', '[email protected]')->name('member.show'); 
     // ...various additional protected member routes... 
    }); 

    // Non protected routes 
    Route::get('pay', '[email protected]')->name('member.pay'); 
    Route::get('confirm/{payment}', '[email protected]')->name('member.confirm'); 
    // ...various additional non protected member routes... 
});