繁体   English   中英

如何选择性地使用 Laravel Sanctum 进行身份验证?

[英]How to optionally authenticate with Laravel Sanctum?

我正在使用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。

Auth默认使用web防护。 /config/auth.php中将其更改为sanctum

'defaults' => [
    // 'guard' => 'web',
    'guard' => 'sanctum',
    'passwords' => 'users',
],

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM