【发布时间】:2020-12-17 09:16:14
【问题描述】:
谁能帮助我通过可选的 Auth 检查来处理 API 路由?我有一个 API ROUTE 'apply-coupon' 可供'Guest' 和'Logged In' 用户使用。如果用户已登录,我需要在控制器中获取用户 ID。
前端 - 使用 React JS 开发,点击“应用优惠券”按钮,API 调用为 -
API end point - https://example.com/api/apply-coupon
Request payload - {coupon : 'my-coupon-code', shop_id : '1', subtotal : '150'}
注意:标头中没有传递令牌,因为访客用户也可以使用“应用优惠券”功能。
预期输出:-当用户点击“应用优惠券”时,如果用户 ID 登录,它应该返回用户 ID。
以下是我在 api.php 文件中的路线 -
Route::post('/apply-coupon', [
'uses' => 'CouponController@applyCoupon',
]);
更新:-默认守卫是-
'defaults' => [
'guard' => 'web',
'passwords' => 'users',
],
我试过了
if(Auth::user()) {
dd(Auth::user());
}
和
auth()->guard('api')->user()
但没有任何效果。谢谢!!
【问题讨论】:
-
您是否尝试在您的路由上调用中间件? laravel.com/docs/7.x/authentication#protecting-routes
-
我需要为访客和登录用户选择保护路由。
-
您可以尝试创建可以在路由上调用的中间件。
-
“当用户点击时”,听起来不像是 API
-
没有任何类型的令牌是不可能检查当前用户的身份的。您必须在标头中选择性地传递令牌。在控制器 auth()->guard('api')->check() 中? auth()->guard('api')->user()->id : NULL
标签: php laravel laravel-5.8 laravel-middleware