Saya mengalami masalah ketika saya perlu mengubah variabel konfigurasi yang digunakan oleh server oauth2 berdasarkan id klien. Ini konfigurasinya:

'grant_types' => [
        'password' => [
            'class' => '\League\OAuth2\Server\Grant\PasswordGrant',
            'callback' => '\App\Api\OAuth2\PasswordGrantVerifier@verify',
            'access_token_ttl' => 3600
        ],
]

Kemudian sebelum saya mengeluarkan token dengan Authorizer::issueAccessToken(); saya mengatur variabel konfigurasi: config(['oauth2.grant_types.password.access_token_ttl' => 86400]); jika saya kemudian menjalankan dd(config('oauth2')); saya mendapatkan:

'grant_types' => array:1 [
        'password' => array:3 [
            'class' => '\League\OAuth2\Server\Grant\PasswordGrant',
            'callback' => '\App\Api\OAuth2\PasswordGrantVerifier@verify',
            'access_token_ttl' => 86400
        ],
]

Tetapi jika saya membiarkan kode berjalan dan mengeluarkan token, responsnya tetap:

{
    "access_token": "HOoODcDzXilakd5TtOv4qqBSBUwEqqWhIL36ALdM",
    "token_type": "Bearer",
    "expires_in": 3600,
    "refresh_token": "6mfyizKlRGC55x6ZY8ROx24UcVeWfljikNZv6ME7",
    "allowed_scopes": [
      "*"
    ],
    "user_is_activated": true
}

Jika saya hardcode nilai 'access_token_ttl' => 86400 saya mendapatkan hasil yang diinginkan dari:

{
    "access_token": "HOoODcDzXilakd5TtOv4qqBSBUwEqqWhIL36ALdM",
    "token_type": "Bearer",
    "expires_in": 86400,
    "refresh_token": "6mfyizKlRGC55x6ZY8ROx24UcVeWfljikNZv6ME7",
    "allowed_scopes": [
      "*"
    ],
    "user_is_activated": true
}

Masalahnya adalah access_token_ttl harus dinamis berdasarkan id klien. Saya tidak dapat membuat perubahan pada pustaka vendor karena ini akan merusak pembaruan di masa mendatang. Adakah yang tahu cara mengubah lebar aplikasi variabel konfigurasi saat runtime yang masih bertahan dalam metode yang berbeda?

0
Sjoerd de Wit 15 Maret 2017, 14:56

2 jawaban

Jawaban Terbaik

Masalahnya adalah dengan kelas yang sudah disediakan di rute login. Memperbaikinya dengan memeriksa kelas Request untuk client_id di AuthServiceProvider dan mengubah konfigurasi di sana.

0
Sjoerd de Wit 16 Maret 2017, 10:08

Periksa apakah Anda belum men-cache konfigurasi Anda, jalankan php artisan config:clear untuk menyetel ulang cache konfigurasi. Anda dapat menjalankan php artisan config:cache di server produksi setelah penerapan untuk peningkatan kinerja.

0
Dwight 15 Maret 2017, 12:09