Laravel 仅为当前用户启用路由

Posted

技术标签:

【中文标题】Laravel 仅为当前用户启用路由【英文标题】:Laravel enable route for only the current user 【发布时间】: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 【参考方案1】:

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

public function show($username)

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

【讨论】:

这不是我理想的解决方案,因为它要求我将所有语句包含在该 if 语句中的 show、edit、update 函数中。

以上是关于Laravel 仅为当前用户启用路由的主要内容,如果未能解决你的问题,请参考以下文章

【PHP】laravel中获取当前路由名称

Laravel 8 获取当前路由参数

如何在 Laravel 中禁用注册新用户

Laravel:如何在路由中传递单个 ID

在 Laravel 5.7 React 应用程序中,收到错误:“classProperties”当前未启用

有啥方法可以在 laravel 5.6 中找出路由文件的当前路径? [复制]