在会话Laravel中存储用户角色



你好,我正在Laravel中处理一个项目,在该项目中,我需要为每个用户分配权限,以便我可以在每个刀片文件或控制器函数上进行验证,以检查当前用户是否有权执行此操作。此外,侧导航链接也是使用这些权限动态生成的。我创建了两个表:

1: User => [ID, Name .....]
2: Permissions => [ID, Name, user_id(fk)]

为了解决这个问题,我在登录时将用户的所有权限存储在会话中。这样我就可以验证每个页面上的所有权限,并生成从会话获取的链接。

这种方法好吗?或者有更好的解决方案吗

如果您能共享更多的代码,那就太好了,但我可以看到您想要归档的内容。首先,您不需要存储在会话中,因为您已经在用户对象和权限之间建立了关系。将以下代码行添加到您的用户模型中:

public function permissions() {
return $this->belongsTo(User::class);
}

然后,您可以在刀片或控制器中访问该权限。控制器中的小示例:


$user = User::find(1);
dd($user->permissions);
// you can write a condition to check if user has Permission etc.

是的,您可以存储这就是会话。但更好的选择是通过像这样的关系对象获得许可

user::find(1)->permissions()

如果你问"更好的解决方案">。。。但我不确定现在提供这些信息是否为时已晚,因为你已经在开发这个项目了。但是,我建议您使用这个包进行长期管理(对于用户和开发人员(。

Spatie Laravel许可包

它具有基于角色的权限直接权限设计(与您的设计类似(。安装软件包后,将为您创建角色表和权限表。

一旦您创建了具有权限的所需角色,就可以轻松管理哪个页面允许显示哪个角色和哪个按钮。

您可以在控制器中检查角色,以查找可以查看此页面的用户。在blade中,您可以检查要显示或禁用哪个按钮的角色和权限。

因此,您无需担心会话设置或会话过期。有利于今后的维护和发展。

Spatie包语法简单,易于使用。

安装:

composer require spatie/laravel-permission

语法:

的基本用法和语法

有很多信息或教程。

最新更新