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 官方-出处

  • 相关阅读:
    java入门 (七) 面向对象(三)
    java入门 (七) 面向对象(二)
    java入门 (七) 面向对象(一)
    ajax异步请求,$.each遍历拼接数据
    java入门 (六) 数组(二)
    java入门 (六) 数组(一)
    java入门 (五) 方法
    微信小程序
    776C Molly's Chemicals --- 前缀和
    CF 458C Elections --- 三分|线段树
  • 原文地址:https://www.cnblogs.com/dafei4/p/13813006.html
Copyright © 2011-2022 走看看