簡體   English   中英

Laravel 4.2路由過濾器根URI的auth / guest錯誤

[英]Laravel 4.2 routing filters auth/guest error for root URI

我正在嘗試根據用戶身份驗證將單個URI路由到多個控制器。 本質上,如果用戶未登錄並點擊了根URI,則顯示一個通用的登錄頁面;否則,如果用戶登錄並訪問了根URI,則顯示其個性化內容。

我使用的是標准的現成過濾器(身份驗證/來賓)和其他一些路由(此處未顯示),它們已設置為快速進行身份驗證/取消身份驗證以進行測試。

這個想法似乎很簡單,在我看來它應該可行,但是Laravel沒有正確處理這個問題:

Route::group(array('before' => 'auth'), function() {
    Route::get('/', function() { echo 'logged in'; });
});

Route::group(array('before' => 'guest'), function() {
    Route::get('/', function() { echo 'logged out'; });
});

我按這些順序排列都無所謂,當用戶通過身份驗證時,Laravel不會確認Auth過濾器。 跳過第一條路線,並且Guest過濾器首先運行,或者單獨運行(可能更准確)。

我是否錯誤地更改了其中一個過濾器中的某些內容? 為什么會這樣呢? 這項工作不應該順利嗎?

Laravel似乎無法處理要對單個URI進行測試的多個操作的分配。 我不想特別花時間在代碼庫中進行挖掘以找出問題所在。 在我看來,對於框架本身來說,這是一個錯誤的設計決策,盡管如果是這樣的話,它將在這里解釋問題。

請給我一個健康檢查。

應該是這個

Route::group(array('before' => 'guest|auth'), function() {
    Route::get('/', function() { 
        if(Auth::check()) {
            return "logged in";
        }

        return 'logged out';
    });
});

一個URI的多個控制器動作有什么意義? 我很困惑。 URI僅由一個Controller的操作提供。 否則,它將得到DRY ,IMO。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM