laravel--[ tymon/jwt-auth ] && 中间件
php artisan vendor:publish --provider="Tymon\JWTAuth\Providers\LaravelServiceProvider" php artisan jwt:secret CREATE TABLE `admin` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, `email` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, `password` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, `remember_token` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `created_at` timestamp NULL DEFAULT NULL, `updated_at` timestamp NULL DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `users_email_unique` (`email`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; 生成admin model php artisan infyom:model Admin 然后修改这个model use Tymon\JWTAuth\Contracts\JWTSubject; use Illuminate\Notifications\Notifiable; use Illuminate\Foundation\Auth\User as Authenticatable; class Admin extends Authenticatable implements JWTSubject{ } //具体代码参考jwt-auth官方
02) 配置 config/auth.php
'defaults' => [ 'guard' => 'web', 'passwords' => 'users', ], 'guards' => [ 'web' => [ //web端登录验证, auth('参数')->attempt() 不指定参数,默认使用web 'driver' => 'session', 'provider' => 'users', ], 'admin' => [ //后面接口登录验证会用到 'driver' => 'jwt', 'provider' => 'feis', ], ], 'providers' => [ 'users' => [ 'driver' => 'eloquent', 'model' => App\User::class, ], 'feis' => [ 'driver' => 'eloquent', 'model' => App\Models\Admin::class ], ], 'passwords' => [ 'users' => [ 'provider' => 'users', 'table' => 'password_resets', 'expire' => 60, ], ],
03) 修改 routes/api.php
Route::group([ // 'middleware' => 'api', 'middleware' => 'auth:admin', //这里配置后在controller 中不在配置 'prefix' => "auth" ], function () { Route::get('login', 'AuthController@login'); // Route::get('login', function () { //http://demo.laravel.com/api/auth/login // return 'API: hello world'; // }); // Route::post('logout', 'AuthController@logout'); // Route::post('refresh', 'AuthController@refresh'); Route::get('me', 'AuthController@me'); });
04) 创建 AuthController
<?php namespace App\Http\Controllers\Api; use App\Http\Controllers\Controller; class AuthController extends Controller { public function __construct() { //api.php 中使用了middleware,这里就不在使用 $this->middleware('auth:admin', ['except' => ['login']]); } public function login() { // atuh() 中的参数默认使用auth.php 'guards' => ['web' => ['driver' => 'session', 'provider' => 'users']] // $webIsLogin = auth('web')->attempt(['email' => "dafei02@qq.com", 'password' => '123456']); $webIsLogin = auth()->attempt(['email' => "dafei02@qq.com", 'password' => '123456']); $adminToken = auth('admin')->attempt(['email' => 'dafei_01@qq.com', 'password' => '123456']); dd($webIsLogin,$adminToken); } public function me() { exit('me'); } }
输出结果.如图
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!