生产环境下Laravel Nova未登录前出现403错误
解决Laravel Nova未登录直接返回403的问题
你的问题出在viewNova门限的闭包参数处理上:未登录时,Laravel不会向Gate闭包传递$user实例,而是传入null,但原代码的闭包要求必须接收$user参数,导致权限校验失败,直接返回403,无法进入登录页面。
修复方案
修改NovaServiceProvider中的gate方法,给$user参数添加默认值null:
protected function gate() { Gate::define('viewNova', function ($user = null) { return true; }); }
原理说明
当用户未登录时,Laravel的Gate系统会将null作为用户实例传入闭包。原代码没有处理$user为null的情况(参数无默认值),导致闭包无法正常执行,触发权限拒绝。添加默认值后,闭包能正常返回true,允许未登录用户访问Nova的登录页面,完成登录流程。
内容的提问来源于stack exchange,提问作者Lucas Dalmarco
相关产品推荐
相关产品推荐

