我正在使用Laravel Sanctum对用户进行身份验证。我想有一个可以访问的客人和登录用户的路线。已登录的用户在Authorization标头中发送API令牌。
我试过在没有身份验证的情况下创建路由,但这样我就看不到登录的用户。
Route::get('noauth', function() {
return Auth::check();
});
GET /noauth with auth header returns false, user is not logged in
GET /noauth without auth header returns false, user is not logged in
我也试过使用auth:sanctum
中间件,但这样访客就无法访问页面。
Route::get('yesauth', function() {
return Auth::check();
})->middleware('auth:sanctum');
GET /yesauth with auth header returns true, the user is logged in
GET /yesauth withouth auth header returns 401, unauthorized
解决方案应该返回带有auth头的true,以及不带auth头的false。
2条答案
按热度按时间zzwlnbp81#
Auth
默认使用web
保护。在/config/auth.php
中将其更改为sanctum
:9njqaruj2#
您可以检查请求中是否有令牌。
如果token存在,请尝试从Sanctum auth guard获取用户并将其分配为当前用户。
并确保不要使用auth:sanctum中间件