2015-10-22 60 views
0

我正在Laravel 5.0中開發自定義訪問控制系統。我創建了一個輔助函數來檢查,如果用戶執行一個功能Laravel 5.0重定向不工作

public function index() { 

    if(has_permission('blahblah')) { 
     // Do actions 
    } 
} 

之前有權而且我有一個輔助功能has_permission

function has_permission($action) { 
    $current_user_perms = array('view_users', 'create_users', 'edit_users', 'delete_users'); 
    if(!in_array($action, $current_user_perms)) { 
     return redirect()->route('access_denied'); 
    } 

    return true; 
} 

但是,當允許失敗,它不是重定向。任何想法?

+0

如果有幫助,您可以接受我對其他讀者的回答:) –

回答

1

您應該返回重定向響應,使其工作。

  1. 更改輔助返回布爾值:
function has_permission($action) { 
    $current_user_perms = ['view_users', 'create_users', 'edit_users']; 
    return in_array($action, $current_user_perms); 
} 
  • 在控制器檢查輔助方法和返回重定向響應,如果需要:
  • public function index() { 
    
        if(!has_permission('blahblah')) { 
         return redirect()->route('access_denied'); 
        } 
    
        // do stuff 
    } 
    

    PS。我高度推薦閱讀middlewares並使用它們代替助手,這是實現簡單權限功能的正確Laravel方法。

    +0

    謝謝。但有可能從Helper本身重定向嗎? –

    +1

    @Corner這不是MVC模式的工作方式。控制器應該返回響應,而不是幫助器。 –