【发布时间】:2020-09-11 06:33:38
【问题描述】:
我在我的 Laravel/Vue 应用程序中遇到了经过身份验证的用户问题。登录后,您可以选择通过 Stripe 进行购买,这会引导您离开页面,并在付款后返回。
只是为了确保,我已经创建了一个端点:
Route::get('test', function(){
return Auth::user();
});
在 Stripe 之前和之后,当我点击它时,我确实找回了用户。因此,身份验证是有序的。
但发生的情况是,Stripe 在支付事件时会对我的路由进行 webhook 回调:
Route::post('api/stripe/checkout-session-completed', 'StripeController@checkoutSessionCompleted');
在钩子中,触发了事件,该事件应该将购买的积分数传播给进行购买的用户,但是我总是得到 Auth::user() 未定义。
use Illuminate\Support\Facades\Auth;
...
public function checkoutSessionCompleted()
{
...
$this->handleCheckout($session); // this is Stripe session object
...
}
private function handleCheckout($session)
{
...
event(new PaymentSuccessful($payment, Auth::user()));
...
}
这应该发生吗?如果不是这样,如何获取当前的 auth 用户?
【问题讨论】:
-
您是否在应用程序中使用了多个守卫?
-
没有。但是,我确实覆盖了
EloquentUserProvider以始终为validateCredentials方法返回true。但身份验证按预期工作。看起来好像在 webhook POST 上,建立了新会话并且它无权访问 auth 用户对象
标签: php laravel events stripe-payments webhooks