【问题标题】:Laravel enable route for only the current userLaravel 仅为当前用户启用路由
【发布时间】:2019-03-16 20:34:18
【问题描述】:

我有两种用户类型 admin 和 member。现在,成员无法查看除自己以外的其他个人资料。只有管​​理员有权访问所有用户配置文件。

现在我的 UsersController@show 路由(只有管理员可以访问)是http://laravel.test/user/username

但是,如果用户使用自己的用户名访问该 url,它应该批准该请求。

这适用于所有其他功能,例如编辑和更新。

现在我可以创建另一个只为当前用户指定的控制器,称之为 MyController。我可以从 UsersController 复制代码,只需更改一些代码,以便它从 auth() 获取当前用户。但我不想这样做。

有什么帮助吗?

【问题讨论】:

  • 你可能想看看 Laravel 的 Middleware 来处理这个问题。然后通过将中间件添加到这些路由来保护您需要的路由。
  • 显示您的用户表结构,以及管理员和用户的 1 条示例记录
  • 中间件是 100% 的路要走。
  • @MarcM。你能告诉我这个的sn-p吗,或者至少链接到一个资源,我已经浏览了几个小时的互联网,没有运气。
  • @GerardBalaoro - 这是完整演练的链接:laravel.com/docs/5.7/middleware

标签: php laravel authentication routes


【解决方案1】:

如果你有自己的条件,你应该稍微改变一下,但逻辑是这样的

public function show($username)
{
    $user = User::where('username',$username)->get();
    if($user->id == Auth::id()){
        // show profile
    }
}

【讨论】:

  • 这不是我理想的解决方案,因为它要求我将所有语句包含在该 if 语句中的 show、edit、update 函数中。
猜你喜欢
  • 1970-01-01
  • 2017-07-03
  • 2016-04-21
  • 1970-01-01
  • 1970-01-01
  • 2021-06-30
  • 2019-08-17
  • 2016-03-26
  • 2015-08-28
相关资源
最近更新 更多