大飞_dafei

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

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');
    }
}
复制代码

输出结果.如图

 

tymon/jwt-auth 官方地址

Docs

 

laravel官网 中间件

laravel官网 登录认证--自定义Guard

JWT 官方-出处

 

posted on   大飞_dafei  阅读(612)  评论(0编辑  收藏  举报

编辑推荐:
· 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 让容器管理更轻松!
点击右上角即可分享
微信分享提示