Laravel阻止用户采取行动

时间:2018-09-22 12:45:46

标签: php laravel

我在项目中使用laravel 5.6,并委托其处理用户/角色/权限。

但是现在我面临另一个问题,我不知道该走哪条路。

基本上,在我的数据库中,我有一个带有x列的“常规”表。每列代表我的应用程序的一部分,因此只有一行。

例如,我可以在“ edit-post”列中添加0、1或2。

如何防止用户根据数据库值访问获取/发布路由?

如果edit-post等于2,则用户可以查看编辑页面/ post编辑数据。

我必须使用中间件吗?盖茨?还有什么?

感谢您的回答。

2 个答案:

答案 0 :(得分:1)

您可以根据用户角色定义用户的权限和活动。像管理员,主持人或超级管理员。只需创建一个表,该表包含具有用户关系的角色名称,并与其进行身份验证。因此,每次用户登录时,他都可以转到其特定区域并执行您定义的活动。 You can see this for better understanding

答案 1 :(得分:1)

正如Raggib所说:创建用户表权限:

 Schema::create('users', function (Blueprint $table) {
    $table->increments('id');
    $table->string('role');
});

创建一个中间件来检查用户是否有权访问您要保护的记录:

if($loggedUser->role != 'admin'){
    // cannot edit
}

此方法的优点是您可以稍后添加角色。这样您就可以更好地控制谁可以访问哪些记录。