- 77
- 0
laravel jwt 做API 退出登录(注销) 该怎么弄? 如何让token失效?
百度找了一圈都没有..
- 共 0 条
- 全部回答
-
星降临 普通会员 1楼
在 Laravel 中,你可以使用 JWT(JSON Web Token)来实现用户登录和注销功能。以下是详细的步骤:
- 首先,你需要在你的 Laravel 后端配置文件(例如
config/auth.php)中添加 JWT 相关的设置。确保jwt是你的应用的默认安全库,例如app/Providers/JwtServiceProvider.php。
php return new Illuminate\Support\Facades.jwt();- 创建一个注销函数,例如
logout(),并使用 JWT 来确认用户是否已经登录。你需要在use Illuminate\Support\Facades.jwt();部分中添加以下代码:
```php public function logout() { // 获取 JWT 的加密令牌 $token = session()->get('jwt_token');
// 使用 JWT 的加密令牌进行注销 if (isset($token)) { // 在 JWT 的解密令牌中删除对应的用户信息 $decodedToken = JWT::decode($token, env('JWT_SECRET'), ['HS256']); $user = User::where('id', $decodedToken->id)->first(); // 如果用户是活跃的,注销用户 if ($user) { $user->delete(); // 如果用户是匿名的,清除用户的数据库记录 if ($user->isGuest) { DB::table('users')->where('id', $user->id)->delete(); } } } // 清除 session 中的 JWT session()->忘记('jwt_token');} ```
- 在你的路由中,你需要使用
@auth和@guard注解来实现登录和注销功能。例如:
```php Route::group(['middleware' => ['auth']], function () { Route::get('/login', function () { return view('login'); });
Route::post('/login', function () { // 获取 JWT 的加密令牌 $token = session()->get('jwt_token'); // 如果用户已经登录,返回登录页面 if (isset($token)) { return view('login'); } // 如果用户未登录,跳转到登录页面 return redirect()->route('login'); }); Route::get('/logout', function () { // 清除 JWT session()->忘记('jwt_token'); // 清除 session 中的 token session()->忘记('token'); });}); ```
- 在你的应用中,你需要在需要注销登录的页面上调用
logout()函数。例如,在login.blade.php文件中:
```html
```
- 请确保你的应用使用的是 JWT 的密钥,并且你的应用配置了 JWT 的存储方式。例如,你可以使用 Laravel 的
jwt库来存储 JWT 的加密令牌。
- 首先,你需要在你的 Laravel 后端配置文件(例如
-
心脏、已满丨住着如来 普通会员 2楼
在 Laravel 中,你可以使用 JWT(JSON Web Token)来实现用户登录和注销功能。以下是详细的步骤:
- 首先,你需要在你的 Laravel 后端配置文件(例如
config/auth.php)中添加 JWT 相关的设置。确保jwt是你的应用的默认安全库,例如app/Providers/JwtServiceProvider.php。
php return new Illuminate\Support\Facades.jwt();- 创建一个注销函数,例如
logout(),并使用 JWT 来确认用户是否已经登录。你需要在use Illuminate\Support\Facades.jwt();部分中添加以下代码:
```php public function logout() { // 获取 JWT 的加密令牌 $token = session()->get('jwt_token');
// 使用 JWT 的加密令牌进行注销 if (isset($token)) { // 在 JWT 的解密令牌中删除对应的用户信息 $decodedToken = JWT::decode($token, env('JWT_SECRET'), ['HS256']); $user = User::where('id', $decodedToken->id)->first(); // 如果用户是活跃的,注销用户 if ($user) { $user->delete(); // 如果用户是匿名的,清除用户的数据库记录 if ($user->isGuest) { DB::table('users')->where('id', $user->id)->delete(); } } } // 清除 session 中的 JWT session()->忘记('jwt_token');} ```
- 在你的路由中,你需要使用
@auth和@guard注解来实现登录和注销功能。例如:
```php Route::group(['middleware' => ['auth']], function () { Route::get('/login', function () { return view('login'); });
Route::post('/login', function () { // 获取 JWT 的加密令牌 $token = session()->get('jwt_token'); // 如果用户已经登录,返回登录页面 if (isset($token)) { return view('login'); } // 如果用户未登录,跳转到登录页面 return redirect()->route('login'); }); Route::get('/logout', function () { // 清除 JWT session()->忘记('jwt_token'); // 清除 session 中的 token session()->忘记('token'); });}); ```
- 在你的应用中,你需要在需要注销登录的页面上调用
logout()函数。例如,在login.blade.php文件中:
```html
```
- 请确保你的应用使用的是 JWT 的密钥,并且你的应用配置了 JWT 的存储方式。例如,你可以使用 Laravel 的
jwt库来存储 JWT 的加密令牌。
- 首先,你需要在你的 Laravel 后端配置文件(例如
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部

