Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 需要具有laravel角色的指南_Php_Laravel 5 - Fatal编程技术网

Php 需要具有laravel角色的指南

Php 需要具有laravel角色的指南,php,laravel-5,Php,Laravel 5,我想用Laravel 5.4开始一个新项目。过去,我曾为不同的用户类型使用不同的表,但对于这个项目,我想为所有类型的用户使用默认的用户表,并将他们的访问权限(角色)分开,我不确定如何做,这就是为什么我需要指南的原因 PS:对于那些可能想要获得密码的朋友,现在还没有密码!在开始编码之前我需要线索,所以请不要评论垃圾邮件 致以问候。假设一个用户可以扮演多个角色,那么要做到这一点。。首先,你必须有3张桌子tbl_用户,tbl_用户角色和tbl_角色,其中 tbl_用户 id username pass

我想用
Laravel 5.4
开始一个新项目。过去,我曾为不同的
用户类型使用不同的表,但对于这个项目,我想为所有类型的用户使用默认的
用户
表,并将他们的访问权限(角色)分开,我不确定如何做,这就是为什么我需要指南的原因

PS:对于那些可能想要获得密码的朋友,现在还没有密码!在开始编码之前我需要线索,所以请不要评论垃圾邮件


致以问候。

假设一个用户可以扮演多个角色,那么要做到这一点。。首先,你必须有3张桌子
tbl_用户
tbl_用户角色
tbl_角色
,其中

tbl_用户

id
username
password
someotherfields
id
user_id
role_id
id
rolename
待定用户角色

id
username
password
someotherfields
id
user_id
role_id
id
rolename
待定角色

id
username
password
someotherfields
id
user_id
role_id
id
rolename
然后在您的
模型用户中
必须为角色分配关系

public function roles()
{
    return $this->belongsToMany('App\Role', 'user_roles', 'user_id', 'role_id')->withTimestamps();
}
现在你有了角色。。现在,如何根据角色设置页面限制。。你要做的是为它准备一个中间件。。以下是方法:

在终端运行中创建一个称为RolePermission的中间件

php artisan make:middleware RolePermission
然后在它的内容

public function handle($request, Closure $next, $roles)
{
    $roles = explode('|',$roles);
    $userRoles = Auth::user()->roles;
    foreach($userRoles as $role)
    {
        if(in_array($role->id, $roles))
        {
            return $next($request);
        }
    }

    // Redirect
    return redirect()->back();
}
基本上,它所做的是检查授权用户列表角色是否在允许使用页面的角色中

然后在路由文件中添加对页面的限制,例如,假设角色管理员的id为1,版主id为2。SimpleUser id:3则页面用户管理要求您是管理员才能输入,然后执行以下操作:

// Group of route that will only be accessible for Users with Level = 1 (Administrator)
Route::group( ['middleware' => 'rolePermissions:1'], function(){
    Route::get('/users',['as'=>'users', 'uses'=>'PagesController@users']);
}

// Multiple roles for a page
Route::group( ['middleware' => 'rolePermissions:1|2|3|4'], function(){
    // routes here
}
此外,该中间件还不能工作。。您必须编辑内核并将其添加到受保护的$RouteMiddle软件下

'rolePermissions' => \App\Http\Middleware\RolePermissions::class,

一切都准备好了,干杯。。您现在对经过身份验证的用户角色有页面限制。

请至少进行谷歌搜索。Ref:@DavidMakogon正如我所说,询问
提供代码
是垃圾评论,因为引导问题不是问题解决者的问题,所以显然人们还没有要求它的代码<代码>有些人只是为了在这个网站上排名而发表这样的评论
@Deamonyowh嗨,谢谢你的评论,现在我让注册用户成为默认的用户角色,而不是管理员或超级管理员等?这取决于你,伙计。。你可以给一个默认角色,或者管理员可以给用户角色,或者两者都给。我知道这可能发生。我的问题是
如何
?我遇到的另一个问题是,我无法通过角色名为正确的用户获取正确的部分。我尝试了这个方法,但没有成功
@if(Auth::user()->role='isAdmin')欢迎回到管理员@否则欢迎用户回来@endif