2015-10-22 34 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模式的工作方式。控制器应该返回响应,而不是帮助器。 –