【问题标题】:Creating admins table separate in Laravel 8在 Laravel 8 中单独创建管理员表
【发布时间】:2021-09-16 17:46:33
【问题描述】:

我正在为用户创建一个 Laravel 项目。 Laravel 有自己的 laravel/ui 包,但我也在创建它的管理面板,我对我应该为管理员做什么有点困惑。另外,我对管理面板的安全性感到困惑。所以我想到了2个解决方案:

  1. 在用户表中添加一个名为status,的新列,如果其值为admin,他可以访问管理面板;否则,重定向到主页。
  2. 创建一个单独的管理员表并改进laravel/ui auth。为此,我找到了文档here

我该怎么办?即使我已经为.envconfig/database.php 中的表格添加了table prefix。恐怕黑客/用户不应该访问管理面板。另外,告诉我表前缀是否有利于安全,还是我应该删除表前缀?

【问题讨论】:

  • 您应该使用与status 列相同的表。如果您验证所有请求,就不容易破解。无论如何,您存储的密码都是有价值的。
  • 你在同一张表,但添加枚举列role,枚举包含useradmin,然后基于此你可以创建中间件检查
  • 好的,感谢您的回答。请检查更新的问题,我添加了关于table prefix的最后一行
  • 我认为这更多的是语义问题。您认为管理员与用户不同还是您认为管理员是一种特殊的用户?
  • 我看不出新表和现有表中的附加“标志”在安全性方面有何区别。 authorisation 允许您设置只有您的管理员才能执行的操作,并为这些操作添加保护措施。答案中建议的 laravel 许可包也是一个不错的选择。

标签: laravel laravel-ui


【解决方案1】:

您需要权限角色系统。

https://spatie.be/docs/laravel-permission/v4/introduction

这对你来说是个好决定。有了配置良好的路由,没有数据库访问权限,任何人都无法在管理面板中访问。

例如,在面板页面中,只有管理员可以访问:

Route::name('adminspace.')->group(['middleware' => ['role:admin']], function () {
        
    Route::view('/panel', 'pages.panel');
});

【讨论】:

  • 你的意思是我只在用户表中添加了一列rolestatus?并检查管理页面,如果角色值为admin,则打开页面,否则重定向到主页?
  • 不,你需要阅读上面链接中的文档。或者您可以通过查找“Spatie Laravel-permission tutorial”在 YouTube 上找到该教程
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-07
  • 1970-01-01
  • 2016-12-03
  • 2022-12-23
  • 2015-08-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多