Php 在Laravel 5.3中,auth::loginUsingId()给出了一个未定义的错误

Php 在Laravel 5.3中,auth::loginUsingId()给出了一个未定义的错误,php,laravel,Php,Laravel,我想更改经过身份验证的用户服务器端。我正在尝试使用: Auth::loginUsingId($id); 从我读到的所有内容来看,这应该都是可行的,但我得到了以下错误: Call to undefined method Illuminate\Auth\RequestGuard::loginUsingId() 我得到了与以下相同的错误: Auth::login(); 应该注意的是,我使用的名称空间是“lightlight\Support\Facades\Auth”,并且Auth::user

我想更改经过身份验证的用户服务器端。我正在尝试使用:

Auth::loginUsingId($id); 
从我读到的所有内容来看,这应该都是可行的,但我得到了以下错误:

Call to undefined method Illuminate\Auth\RequestGuard::loginUsingId()
我得到了与以下相同的错误:

Auth::login(); 
应该注意的是,我使用的名称空间是“lightlight\Support\Facades\Auth”,并且Auth::user();返回预期的经过身份验证的用户


那么我在这里遗漏了什么呢?

您使用的是
RequestGuard
而不是
SessionGuard
。这个防护没有这些方法,因为没有“登录”这样的概念

身份验证文档用于默认的guard
web
SessionGuard
。这是您可以登录的,因为服务器端有状态来跟踪它。这就是所有auth脚手架的用途

RequestGuard
是您必须定义回调的内容,以便为每个请求对用户进行身份验证


由于
RequestGuard
不会为您提供持久性,您只希望为当前请求测试设置一个防护上的用户,因此您可以调用
setUser
(以可验证的[interface]实例为例)所有守卫都有一个方法来设置守卫上的用户实例。

您使用的是
RequestGuard
而不是
SessionGuard
。这个防护没有这些方法,因为没有“登录”这样的概念

身份验证文档用于默认的guard
web
SessionGuard
。这是您可以登录的,因为服务器端有状态来跟踪它。这就是所有auth脚手架的用途

RequestGuard
是您必须定义回调的内容,以便为每个请求对用户进行身份验证


由于
RequestGuard
不会给你持久性,你只想为当前的请求测试设置一个守卫上的用户,所以你可以调用
setUser
(使用一个可验证的[interface]实例),所有守卫都可以用它作为在守卫上设置用户实例的方法。

我看到了,但Auth::user()正在返回当前经过身份验证的用户。没有办法更改经过身份验证的用户吗?您是否查看了该guard类,并查看了它有哪些方法?应该注意的是,我已经实现了这一点。我成功地调用了loginUsingId,它改变了Auth:User()的返回。但是,某些内容必须已更改,因为它不再工作,并且正在返回未定义的错误。所以我非常专注于让这种方法发挥作用。我不明白的是,根据docs(),我有正确的名称空间,并且使用了正确的方法名。那么是什么原因呢?不给出预期的结果是一回事,但它不应该返回未定义的结果。。它使用的防护装置与解除防护装置不同,这意味着有人更改了默认防护装置,或者在生命周期中有人更改了它。凯,我感谢你抽出时间为我指出正确的方向。我认为这是我们的警卫执行的问题。最后,RequestGuard上的setUser方法应该完成我正在寻找的任务。谢谢我明白了,但是Auth::user()正在返回当前经过身份验证的用户。没有办法更改经过身份验证的用户吗?您是否查看了该guard类,并查看了它有哪些方法?应该注意的是,我已经实现了这一点。我成功地调用了loginUsingId,它改变了Auth:User()的返回。但是,某些内容必须已更改,因为它不再工作,并且正在返回未定义的错误。所以我非常专注于让这种方法发挥作用。我不明白的是,根据docs(),我有正确的名称空间,并且使用了正确的方法名。那么是什么原因呢?不给出预期的结果是一回事,但它不应该返回未定义的结果。。它使用的防护装置与解除防护装置不同,这意味着有人更改了默认防护装置,或者在生命周期中有人更改了它。凯,我感谢你抽出时间为我指出正确的方向。我认为这是我们的警卫执行的问题。最后,RequestGuard上的setUser方法应该完成我正在寻找的任务。谢谢