laravel - 如何在 Laravel Passport 中检查身份验证状态?
问题描述
我正在尝试使用 Passport auth 检查 Laravel 中的用户身份验证状态。这是我正在尝试的:
api.php
Route::post('/check-auth-status', 'LoginController@checkUserAuthStatus')->middleware('auth:api');
登录控制器
public function checkUserAuthStatus(Request $request)
{
if($request->user() !== auth()->user())
return response()->json('Unauthorized user',401);
}
这里的问题是当用户退出时 url 没有命中,因为middleware('auth:api')
in 路由,所以它向应用程序发送了未经授权的消息。此外,Auth::check() 不起作用(总是返回 false)。
在这里做什么?还是有更好的主意?提前致谢 !
解决方案
就像您的代码一样,它不会像您使用中间件一样工作,所以如果不是 auth 它不会进入checkUserAuthStatus
它会重定向到登录页面
你需要处理这个Handler.php
将此功能添加到Handler.php
use Illuminate\Auth\AuthenticationException;
protected function unauthenticated($request, AuthenticationException $exception)
{
return $request->expectsJson()
? response()->json('Unauthorized user',401)
: redirect('/login');
}
这$request->expectsJson()
意味着如果请求header
有accept:application/json
,那么它将返回带有您的自定义消息的 json 响应Unauthorized user
推荐阅读
- python - 使用大量使用 tkinter python 的 MainLoop
- python - 将 txt 的行添加到列表中
- python - 如何在 pyQt 中获取激活的 lineEdit 或标签
- python - 熊猫数据框:旋转具有多个值的多个日期列
- javascript - Discordjs 加入语音频道并说了什么然后离开语音频道
- scala - 如何将函数结果传递给 math.max
- tensorflow - Tensorflow 要求运行构建,即使它已经完成
- c# - 尝试从实例化的按钮预制件中获取组件InParent 时获取 NullReferenceExeption
- javascript - Number.isInteger(this) 在 Number.prototype 方法中不起作用
- css - box-shadow CSS 属性在 iOS 上无法正常工作