首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何允许Laravel管理员用户模拟或验证我网站上的任何其他用户?

如何允许Laravel管理员用户模拟或验证我网站上的任何其他用户?
EN

Stack Overflow用户
提问于 2018-09-18 01:01:40
回答 2查看 679关注 0票数 1

我正在尝试弄清楚如何最快和最容易地允许我正在构建的网站上的管理员用户访问和更新任何用户的设置等。例如,我已经为常规用户编写了更新其设置(以及各种其他操作)的代码。理想情况下,我希望管理员能够“成为”该用户,因为我的代码有关,即允许管理员做任何用户可以做的事情,该用户的帐户。有什么方法可以做到这一点吗?

如果我以admin身份认证::login(),那么从Laravel的角度来看,我是admin用户,而不是他们可能想要编辑的用户。如果我以用户身份登录,则我没有管理权限(在我的情况下,这意味着导航栏上有一个额外的管理菜单,其中包含挂起或删除用户或搜索其他用户的选项)。

有没有关于如何做的想法,或者我是不是把事情搞得太复杂了?我正在寻找一个特定的函数/代码来实现这一点,而不是一个通用的策略。我使用的是部署在Heroku上的Laravel 5.4。我知道有中间件,但它似乎不能像上面那样做我想要的事情。

非常感谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-09-18 02:06:50

您可以按照Tim Lewis的上述评论中的建议进行操作,也可以接受用户编辑页面中的"override“属性,在该页面中,您可以传递特定的用户ID,然后以该用户的身份查看页面。例如,该方法可能如下所示:

代码语言:javascript
复制
public function editUser(User $user=null) {
    //User that you want to edit can be provided. If not provided, $user will be null and we will load the user that is currently logged in.
    if($user!=null && Auth::user()->role=='admin')
        $user_to_edit = $user;
    else
        $user_to_edit = Auth::user();

    //other code goes here
}

然后,如果您将$user对象传递给该方法,您将看到该用户的编辑页面,而不是Admin。否则,用户将能够使用相同的路线,以便始终查看他们自己的编辑页面。

对这样的代码要非常小心!您需要确保非管理员不能加载用户对象并查看其他人的信息。这就是我在if/else语句中添加$user->角色检查的原因,但您可能希望以中间件的形式添加额外的安全性。

票数 1
EN

Stack Overflow用户

发布于 2018-09-18 03:15:23

spatie权限是一个很棒的包,我使用它来为超级管理员提供对资源的权限。https://github.com/spatie/laravel-permission

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52372591

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档