Зміни в документі Версія 6: Налаштування
Остання зміна 2024/07/11 10:07 автором Ashterix
Підсумок
-
Властивості сторінки (1 змінено, 0 додано, 0 видалено)
Подробиці
- Властивості сторінки
-
- Вміст
-
... ... @@ -22,8 +22,7 @@ 22 22 23 23 * вказати пустий масив {{code language="none"}}[]{{/code}} щоб зробити API повністю відкритим 24 24 25 -{{code language="yaml"}} 26 -# config/packages/ufo_json_rpc.yaml 25 +{{code language="yaml" layout="LINENUMBERS" width="500px" title="config/packages/ufo_json_rpc.yaml"}} 27 27 ufo_json_rpc: 28 28 security: 29 29 protected_methods: [] ... ... @@ -63,6 +63,12 @@ 63 63 64 64 65 65 65 + 66 + 67 + 68 + 69 + 70 + 66 66 == {{code language="none"}}clients_tokens{{/code}} == 67 67 68 68 Тепер слід вказати масив клієнтськіх токенів, які будуть мати доступ до API. ... ... @@ -119,4 +119,32 @@ 119 119 120 120 === Токени для користувача === 121 121 122 -Вам може стати 127 +Припускаю, що у вас може виникнути потреба зробити персональні ключі для користувачів вашого додатку, можливо ви захочете впровадити ліміти або інші обмеження 128 +В такому випадку 129 + 130 +{{code language="php" layout="LINENUMBERS" title="new class"}} 131 +<?php 132 + 133 +namespace App\Services\RpcSecurity; 134 + 135 +use App\Services\UserService; 136 +use Symfony\Component\Security\Core\Exception\UserNotFoundException; 137 +use Ufo\JsonRpcBundle\Security\Interfaces\ITokenValidator; 138 +use Ufo\RpcError\RpcInvalidTokenException; 139 + 140 +class UserTokenValidator implements ITokenValidator 141 +{ 142 + 143 + public function __construct(protected UserService $userService) {} 144 + 145 + public function isValid(string $token): bool 146 + { 147 + try { 148 + $this->userService->getUserByToken($token); 149 + return true; 150 + } catch (UserNotFoundException $e) { 151 + throw new RpcInvalidTokenException(previous: $e); 152 + } 153 + } 154 +} 155 +{{/code}}