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

  • 相关阅读:
    Laravel update某一字段值为另一字段值
    Layui 批量
    CI 框架多表关联查询
    PHP数组函数
    PHP固定长度字符串
    PHP常用方法汇总
    CI 框架批量添加数据(如果数据库有就更新数据)
    使用nginx-http-concat优化网站响应
    mysql自动化安装
    SQL迁移到ORACLE实例
  • 原文地址:https://www.cnblogs.com/dafei4/p/13813006.html
Copyright © 2011-2022 走看看