Laravel中temporarySignedRoute()使用遇403错误求助
问题分析与解决
你的问题根源在于临时签名路由的过期时间写法错误,now()->hours(1)并不是给当前时间增加1小时,而是把当前时间的小时数直接设置为1,这会导致生成的路由大概率已经过期,所以访问时返回403。
正确写法
把生成临时路由的代码改成:
$url = URL::temporarySignedRoute('forgot-password.email.sent', now()->addHours(1), ['email' => $email]);
错误原因说明
now()->hours(1)是Carbon的时间设置方法,作用是将当前时间的小时字段强制设为1,比如现在是下午4点,执行后时间会变成当天凌晨1点,这个时间早于当前时间,路由生成后直接过期,自然触发403。now()->addHours(1)才是正确的"向后添加1小时"的方法,会把过期时间设置为当前时间往后推1小时,符合你的需求。
你也可以打印生成的$url,查看其中的expires参数对应的时间戳,确认是否在当前时间之后,就能直观验证问题。
内容的提问来源于stack exchange,提问作者Hvel
相关产品推荐
相关产品推荐

