【发布时间】:2023-03-31 15:29:01
【问题描述】:
// route which should be used by authenticated and unauthenticated user
Route::get('user/send-parcel', 'User\SenderController@sendParcerl');
我已尝试在 web 中添加此路由(在此 auth 中间件之外)。它工作正常,但在我的控制器中,如果用户未登录,我必须添加用户 ID,如果用户未登录 user_id 字段应包含 NULL 的值。
$user = Auth::user();
$parcel->user_id = isset($user) ? $user->id : NULL;
主要问题是如果我将路由放在 Auth 中间件之外,它将无法在我的控制器中获得 Auth。因此该代码适用于未经身份验证的用户,但对于经过身份验证的用户,它还将NULL 放在user_id 字段中
【问题讨论】:
-
你能发布你的路线吗?
-
请向我们展示控制器功能
sendParcerl()代码。你需要有一个 user->id 或者它可以是 null 吗? -
这是 api 身份验证还是会话身份验证?
-
Route::group(['middleware' => 'auth:user'], function () { Route::get('send-parcel', 'User\SenderController@sendParcerl'); });但我希望这条路由在 auth 和 unauth 用户中使用,所以我把它放在这个中间件之外,但结果是我的控制器如果用户登录并尝试添加数据,它会给我 NULL
-
您的路由受 Auth 中间件保护,因此您可以删除路由中间件、从中间件中删除此路由或编写另一个指向同一控制器@函数的路由。