2015-04-06 126 views
1

我尝试制作自己的权限系统。但是如果用户没有特定的角色,他们就无法访问该页面,从而导致代码出现问题。Laravel 5 - 角色权限

这里是我的代码:

public function compose($view) 
{ 
    $roleid = Session::get('role_id'); 
    $userid = Session::get('user_id'); 
    $additional_role = Session::get('additional_role'); 

    $roles = explode(';', $additional_role); 

    $segment = Request::segment('1'); 

    $joins = []; 
    foreach ($roles as $role) 
    { 
     $query = DB::table('roles')->where('id', $role)->first(); 
     $joins[] = $query->link; 

    } 


    foreach($joins as $join) { 
     var_dump($join); var_dump($segment); 

     if ($join == $segment) 
     { 
       return redirect($segment); 
     } 
     else 
     { 
      return redirect('/'); 
     } 
    }   



} 

我做一个作曲家中的代码,所以我可以继续启动它。但是我不能让它工作,即使用户没有他们没有重定向到'/'的角色。

有什么办法可以使它工作吗?所以他们不会进入页面,如果他们有角色,他们会进入页面。

+0

[有两种类型的用户在laravel 5]的可能重复(http://stackoverflow.com/问题/ 2904/有两种类型的用户在laravel 5) – 2015-04-06 13:13:14

+0

@limonte嗨。感谢回复。不。这个应用程序只适用于后端,所以没有前端用户,我已经将所有需要的表格更改为员工。所有的登录都很完美。我试图vardump加入和细分他们都像我想要的回报。当我尝试比较结果时,问题没有得到解决。 – ssuhat 2015-04-06 13:15:07

回答

0

你在哪里有这个逻辑?

我最好的地方想L5权限和权威性的逻辑是“HTTP /中间件”, 那里你可以带手柄的方法和逻辑内添加的文件,然后你必须编辑kernel.php

protected $routeMiddleware = [ 
     'auth'   => 'App\Http\Middleware\Authenticate', 
     'auth.basic' => 'Illuminate\Auth\Middleware\AuthenticateWithBasicAuth', 
     'guest'   => 'App\Http\Middleware\RedirectIfAuthenticated', 
     'test'   => 'App\Http\Middleware\yourFile', 
    ]; 

您可以查看laravel ACL在这里很好的解决方案:https://gist.github.com/amochohan/8cb599ee5dc0af5f4246

,然后你可以很容易使你的角色权限