laravel - 如何注销并撤销 laravel 8 api 中的所有 oauth 令牌?
问题描述
我用passport和laravel 8构建的api默认不注销。
我找到了一个脚本,但它没有删除 oauth-access-tokens 表中的条目
我向 AuthController 添加了一个函数:
public function logout(Request $request){
$accessToken = auth()->user()->token();
$token= $request->user()->tokens->find($accessToken);
$token->revoke();
return response(['message'=> 'Je bent uitgelogd'], 200);
}
并在 api.php 中添加了一个路径:
Route::post( 'logout', 'App\Http\Controllers\API\AuthController@logout')->middleware('auth:api');
当我尝试使用 Postman 注销时,我会收到一条成功消息,但不会删除 oauth-access-token 表中的条目。
我打算为用户删除所有令牌,以从所有设备中注销
谁能告诉我我做错了什么?
解决方案
解决了:
我使用了以下代码:
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\User;
use Illuminate\Support\Facades\Auth;
和功能:
public function logout(Request $request){
Auth::user()->tokens->each(function($token, $key) {
$token->delete();
});
return response(['message'=> 'Je bent uitgelogd'], 200);
}
所以什么都没有被撤销,但所有的令牌都被删除了..
推荐阅读
- python - 如何在浏览器中手动解决 reCaptcha
- java - Spring REST API 架构
- heroku - 对爱好和专业的 Heroku 定价感到困惑(标准 1x)
- javascript - 有没有办法避免在我的代码中使用 forceupdate ?
- ruby-on-rails - 猴子如何修补动作文本的表单助手以排除活动存储依赖关系?
- react-native - React Native onPress 事件返回未定义
- java - 如何在 Android 中使用 OkHttp 缓存 Jsoup 请求
- reactjs - 反应钩子。更新组件在其中一个道具更改后通过 onClick 作为参数传递
- arrays - 如何在 Swift 中的视图中临时存储数据数组和对象
- sql - 当您的数据在列中为空时,Big Query 过滤器出现问题