Laravel护照-允许用户充当/登录其他用户

时间:2020-07-24 15:33:57

标签: laravel authentication laravel-passport

我正在开发一个应用程序,其中一些用户应有权访问其他用户帐户。例如:在一个家庭中,母亲和所有3个孩子都有一个帐户。现在,母亲应该可以访问所有孩子的帐户了。

是否可以使用Passport在Laravel中设置类似的内容?我想到了带有两列(parent_account,child_account)的“权限”数据库表。然后,父帐户可以在其具有权限的帐户之间切换。

Perfect就像是一个中间件,可以在其中设置Auth::actAs($child);,然后每次Auth::user()的调用都会成为孩子,直到我切换回“普通”帐户。

其他信息:我正在使用Laravel为我的React Frontend Application提供一个API。我尝试了Auth::loginUsingId函数,但是当我使用它时,我注销并得到Method Illuminate\Auth\RequestGuard::loginUsingId does not exist.异常。

我正在使用Laravel版本6.9.0

1 个答案:

答案 0 :(得分:0)

我找到了解决问题的方法。

我添加了一个包含以下代码的中间件:

public function handle($request, Closure $next)
    {
        $activeChild = Auth::user()->activeChild; // id of child user

        if ($activeChild) {
            Auth::setUser($activeChild);
        }

        return $next($request);
}

之后,我将此中间件添加到了所有路由:

Route::group(['middleware' => ['actAsUser']], function () {
     // some routes
});