拉拉维尔 什么是警卫?
2022-08-30 07:59:45
我正在查看内置的身份验证控制器,我注意到它们使用了称为“Guards”的东西。到目前为止,每当我制作自己的登录/注册表单时,我从未接触过这些表格,通常只会做这样的事情:
Auth::attempt()
没有任何类型的防护装置。我试图查找它到底是什么,但我真的找不到任何关于它的信息,有人可以向我解释警卫的目的是什么吗?
我正在查看内置的身份验证控制器,我注意到它们使用了称为“Guards”的东西。到目前为止,每当我制作自己的登录/注册表单时,我从未接触过这些表格,通常只会做这样的事情:
Auth::attempt()
没有任何类型的防护装置。我试图查找它到底是什么,但我真的找不到任何关于它的信息,有人可以向我解释警卫的目的是什么吗?
由于我有同样的问题,而其他答案没有为我提供我正在寻找的信息(它们完美地解释了警卫的作用,但不是为什么你应该担心调用它的方法),我将提供另一个答案。
我也不确定助手提供的方法和警卫本身提供的方法之间的区别,因为它们似乎也这样做。auth()
auth()->guard()
快速显示它返回 的实例。因此,我们可以在源代码中查找该类:在AuthManager的底部.php有一个神奇的方法,它将所有未定义的调用转发到它自己的方法。dd(auth())
AuthManager
__call()
guard()
public function __call($method, $parameters)
{
return $this->guard()->{$method}(...$parameters);
}
这清楚地向我们表明,方法和不仅似乎做同样的事情,而且完全相同。因此,只要应该使用默认防护,就可以放心地省略额外的保护。auth()
auth()->guard()
->guard()