【问题标题】:Restricting 'Users' in Laravel while still allowing everyone to edit their own 'User'限制 Laravel 中的“用户”,同时仍然允许每个人编辑自己的“用户”
【发布时间】:2014-10-04 09:27:23
【问题描述】:

我仍在学习 Laravel 和最佳实践。

我有一个用户系统,所以你可以通过 UserController 创建和更新用户。只有管​​理员应该能够访问用户并操纵他们。所以我创建了以下路线:

Route::resource('user', 'UserController')->before('role:admin'); 

一切看起来都很好,工作正常。我有一个过滤器,用于检查登录用户是否是管理员,然后才能访问与用户有关的任何内容。

这就是我感到困惑的地方。登录但不是管理员的用户应该仍然能够编辑自己的信息(电子邮件、密码、用户名)。我已经使用相同的表单部分设置了一个新表单我已经设置用于编辑用户,因为所有字段都是相同的,我认为我可以使用相同的表单方法处理表单,以免重复处理,这是相同的:

{{Form::model($user, ['method'=>'PATCH', 'route'=>['user.update', $user->id]])}}

除了,因为我的用户不是管理员,他们被推送回 403 消息而不是处理脚本。

我如何让用户编辑自己的信息的例外情况,而不会失去对 UsersController 的管理员限制?

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    简单的解决方案是创建一个具有不同访问限制的AccountController。在UsersControllerAccountController 之间完成的任何常见处理都可以移动到模型中。

    【讨论】:

    • 好的,所以如果我这样做并将编辑过程移至帐户控制器,这是否意味着如果用户编辑表单以尝试编辑不同的用户 ID,他们可以成功吗?
    • 在帐户控制器中,您只需更新与登录用户匹配的用户。
    • 我很惊讶这被选为接受的答案。 @TH1981 对我来说似乎是个坏建议,而不是 DRY。
    猜你喜欢
    • 1970-01-01
    • 2017-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-14
    • 1970-01-01
    相关资源
    最近更新 更多