我正在使用 Sanctum 使用 Laravel 和 React 创建一个应用程序。有些路由需要是通用的,可供登录和注销的用户访问。我只是想根据用户的身份验证状态显示不同的信息。问题是,只有当我使用
auth::sanctum
中间件时,我才能检查我是否已登录(Auth::check()
)或显示当前登录用户的信息(如果有的话)(Auth::user()
)。我已经找到了解决方案,包括这里。我找到了几个帖子,但没有一个能解决我的问题。我尝试过使用 $request->user('sanctum')
或尝试使用这样的中间件:
class AuthSanctum
{
public function handle(Request $request, Closure $next)
{
if ($request->bearerToken()) {
Auth::setUser(
Auth::guard('sanctum')->user()
);
}
return $next($request);
}
}
我想创建一个控制器方法,在其中检查用户是否已登录,如果是,我希望能够检索用户数据。我怎样才能实现这一目标,为什么它对我不起作用?正如我之前提到的,到目前为止我找到的解决方案并不适合我。因此,这篇新文章。
-1-从“通用”路线中删除中间件
-2-直接在控制器中检查请求是否来自使用 Auth::check() 进行身份验证的用户,并根据该结果返回适当的响应