Laravel 5 - 角色权限

时间:2015-04-06 12:55:47

标签: php laravel 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('/');
        }   
    }         



}

我在作曲家中制作代码,以便我可以继续启动它。但我无法使其工作,即使用户没有他们没有重定向到'/'的角色。

有什么方法可以让它发挥作用吗?所以他们不会进入页面,如果他们有角色,他们就会进入页面。

1 个答案:

答案 0 :(得分:0)

你在哪里有这个逻辑?

我认为在l5中权限和auth逻辑的最佳位置是" Http / Middleware", 你可以在里面添加句柄方法和逻辑,然后你必须编辑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

然后您就可以轻松获得角色权限