所有者编辑员工时没有参数的Laravel路由
Posted
技术标签:
【中文标题】所有者编辑员工时没有参数的Laravel路由【英文标题】:Laravel routes with no parameter when owner edits employees 【发布时间】:2021-03-26 08:10:24 【问题描述】:我正在使用 Laravel 8,我遇到了这种情况。只有拥有所有者角色的用户才能更新其员工。我为所有者、经理和员工提供了一张表,其结构如下所示。
id | company_id | role_id | other_fields |
---|
我知道如何授权所有者或经理修改员工数据并阻止不属于该特定公司的用户访问其他公司的页面。
但是,我不希望员工的 ID 出现在地址上,以避免在用户进行假设操作后返回 404 页面。我需要的是类似下面的东西。
my-domain.myapp/en/edit-employee/1
会变成这样
my-domain.myapp/en/edit-employee/
但要准确指向该员工的编辑页面。
如何将员工 id 传递给控制器而不通过路由并在编辑页面上看到正确的员工?
【问题讨论】:
您需要以一种或另一种方式发送用户 ID。你有什么好怕的呢?人们检查是否存在用户 ID 对吗?但是他们只有在他们是公司所有者的情况下才能做到这一点,对吧?我建议你坚持第一条路线,但不要在控制器中注入用户模型,而是手动找到模型。未找到您自己的用户 ID 代码中止。 【参考方案1】:您可以在请求正文中将其作为 post 参数发送,例如:
$response = Http::update('http://example.com/en/edit-employee/', [
'user_id' => '12',
]);
然后你可以像这样检索请求正文
class DemoController extends Controller
public function update(Request $request)
$name = $request->input('user_id');
话虽如此,我认为按照您现在的方式进行操作没有问题。毕竟,如果用户输入一个随机的 id,如果他没有被授权,他将无法访问,如果 id 根本不存在,那么显示 404 页面(或将用户重定向到另一条路线)没有任何害处.
【讨论】:
我会坚持你的结束建议。正如我所说,这是为了发现一些我可能不知道的新事物。以上是关于所有者编辑员工时没有参数的Laravel路由的主要内容,如果未能解决你的问题,请参考以下文章
使用路由参数返回视图不完整且没有 Css [Laravel 5]
将 Vue js 前端和 laravel 后端(api 路由)托管到共享服务器?
自动检测 PHP Laravel 应用程序中的所有路由? [复制]