【发布时间】:2022-10-19 15:54:13
【问题描述】:
我正在通过routes/api.php 中的路由访问PayPalController,但是当我尝试检查用户是否经过身份验证时,它返回null。
PayPalController:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Srmklive\PayPal\Service\Paypal;
class PayPalController extends Controller
{
public function create(Request $request)
{
// returns null
$id = Auth::id();
// can't read "id" of null
$id = auth('api')->user()->id;
}
}
routes/api.php:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
Route::post('/paypal/order/create', [PayPalController::class, 'create']);
我尝试在config/auth.php 中创建一个api guard 并像这样使用它:
auth('api')->user()->id
但它什么也没改变。
编辑:
用户已通过身份验证,但仍返回 null。
【问题讨论】:
-
如果要检查用户是否经过身份验证,为什么不使用
auth()->check()或Auth::check()代替? -
Auth::id() 返回 null 因为还没有用户通过身份验证。
-
最后,只需使用
auth()->user()->id而不是auth('api) -
API 路由是无状态的。如果您想要一个经过会话身份验证的用户,请将路由移动到 web.php
-
用户已通过身份验证。
标签: php laravel authentication model-view-controller