如何在没有实际身份验证的情况下使用Auth :: login()

时间:2020-01-22 16:41:34

标签: laravel

我想使用“ Laravel”身份验证功能。

我有一个中间件,可以找到一些数据,然后提取:

$member = $this->memberService->getMemberRolesFromLdap($accessToken, $id);

$ member是一个数组。

在进行了这项研究之后,我想将这个$ member存储在某个地方,以便稍后在其他一些类中检索一些数据。像这样:

$roles = Auth::user()->roles;

因此,我认为这是使用这些Auth功能的好机会。但是目前,我有这个错误:

Symfony \ Component \ Debug \ Exception \ FatalThrowableError:传递给Illuminate \ Auth \ SessionGuard :: login()的参数1必须是Illuminate \ Contracts \ Auth \ Authenticatable的实例,给定数组

因此,据我了解,我必须声明$ member使用(或是)Authenticable实例的某个地方。我承认自己的局限性。

使用Auth功能执行此操作是否是一个好主意,如果可以,我该怎么做?

1 个答案:

答案 0 :(得分:0)

我尝试了这个。可以,但是我不确定这是否是最佳做法:

$ldapData = $this->memberService->getMemberRolesFromLdap($accessToken, $id);

    // login this member
    $user = new User();
    $user->ldapData = $ldapData;
    Auth::login($user);

现在,我可以像这样操纵用户了:

Auth::user()->ldapData