zoukankan      html  css  js  c++  java
  • laravel--[ tymon/jwt-auth ] && 中间件

    php artisan vendor:publish --provider="TymonJWTAuthProvidersLaravelServiceProvider"
    
    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 TymonJWTAuthContractsJWTSubject;
    use IlluminateNotificationsNotifiable;
    use IlluminateFoundationAuthUser 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' => AppUser::class,
            ],
            'feis' => [
                'driver' => 'eloquent',
                'model' => AppModelsAdmin::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 AppHttpControllersApi;
    use AppHttpControllersController;
    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 官方-出处

  • 相关阅读:
    hdu 2019 数列有序!
    hdu 2023 求平均成绩
    HDU 5805 NanoApe Loves Sequence (思维题) BestCoder Round #86 1002
    51nod 1264 线段相交
    Gym 100801A Alex Origami Squares (求正方形边长)
    HDU 5512 Pagodas (gcd)
    HDU 5510 Bazinga (字符串匹配)
    UVALive 7269 Snake Carpet (构造)
    UVALive 7270 Osu! Master (阅读理解题)
    UVALive 7267 Mysterious Antiques in Sackler Museum (判断长方形)
  • 原文地址:https://www.cnblogs.com/dafei4/p/13813006.html
Copyright © 2011-2022 走看看