我正在查看内置的身份验证控制器,发现它们使用了称为“ Guards”的东西。到现在为止,每当我创建自己的登录/注册表单时,我都从未碰过它们,通常只会做以下事情:
Auth::attempt()
没有任何类型的警卫。我曾尝试查找确切的内容,但实际上找不到任何信息,有人可以向我解释一下警卫的目的是什么?
Answers:
防护是提供用于标识经过身份验证的用户的逻辑的一种方式。Laravel提供了不同的防护措施,例如会话和令牌。会话保护程序通过cookie维护每个请求中用户的状态,另一方面,令牌保护程序通过检查每个请求中的有效令牌来验证用户身份。
由于我有相同的问题,而其他答案没有提供我所需要的信息(它们可以完美地解释警卫的工作,但不能解释为什么您应该担心调用其方法),所以我将提供另一个答案。
我也不确定auth()
助手所提供的方法与警卫本身所提供的方法之间的区别auth()->guard()
,因为它们似乎相同。
快速dd(auth())
查看表明它返回的实例AuthManager
。因此,我们可以在源代码中查找该类:在AuthManager.php的底部,有一个__call()
魔术方法,可将所有未定义的调用转发到其自己的guard()
方法。
public function __call($method, $parameters)
{
return $this->guard()->{$method}(...$parameters);
}
这清楚地向我们表明,auth()
和的方法auth()->guard()
不仅看起来相同,而且完全相同。因此,只要使用默认防护,->guard()
就可以省去一些额外的防护。
守卫角色是对路线进行身份验证
$this->preventMinorsGuard();
。可以这样使用吗?