是否有可能在不使用用户身份验证服务的情况下使用Gate授权?
例如,我想定义一个门:
Gate::define('morning', function(){
return date('H') < 12;
});
[当我执行Gate::allows('morning')
或在控制器中时$this->authorize('morning')
总是返回false,因为没有用户登录。
我如何仅对访客用户有效?
尽管可能有更好的解决方案,例如使用middleware
或使用abort
辅助功能:
abort_if(date('H') < 12, 403);
但是通过声明“可选的”类型提示或为用户参数定义提供空默认值来提供solution for policies:>
class DatePolicy { /** * Determine if it's morning now! * * @param \App\User $user * @return bool */ public function morning(?User $user) { return date('H') < 12; } }
也可能适用于盖茨,但我尚未对此进行测试:
Gate::define('morning', function ($user = null) {
return date('H') < 12;
});