Php 如何检查是否使用了Gate::before方法?
我在代码中使用了laravel的授权,并在我的服务提供商中定义了before方法,如文档所示:Php 如何检查是否使用了Gate::before方法?,php,laravel,Php,Laravel,我在代码中使用了laravel的授权,并在我的服务提供商中定义了before方法,如文档所示: public function before($user, $ability) { if ($user->email == 'super@mail.com') { return true; } } 有时我需要知道支票是否被拦截。因此,我不想在不同的地方检查邮件(或超级用户的任何其他条件),而是想检查是否使用了这种拦截方法。我的意思是,不要一次又一次地在不同的地方
public function before($user, $ability)
{
if ($user->email == 'super@mail.com') {
return true;
}
}
有时我需要知道支票是否被拦截。因此,我不想在不同的地方检查邮件(或超级用户的任何其他条件),而是想检查是否使用了这种拦截方法。我的意思是,不要一次又一次地在不同的地方使用这个条件(如果电子邮件是相等的…)。我只想设置这个超级管理员条件一次(在服务提供商中),然后在需要时检查它。比如:
\Gate::isIntercepted
您可以返回授权响应,而不是简单地返回
true
:
之前的公共函数($user$ability)
{
如果($user->email=='super@mail.com') {
返回$this->allow('superadmin');
}
}
如果使用authorize
,您将在稍后收到响应:
公共功能更新(Post$Post)
{
$response=$this->authorize($post);
如果($reponse->message()=='superadmin'){
//做点什么
}
}
首先非常感谢。我是拉雷维尔的新手。你能详细解释一下吗?当我使用“return$this->allow('superadmin')时,我遇到了一个错误。调用未定义的方法[allow]。@Skeletor-你必须使用该特质。是的,经过一番努力,我发现我必须使用该特质。再次发出thx@JosephSilber。