hallboav / silex-jwt-security
Silex 2 的 JSON 网络令牌安全提供者。
v1.1
2017-07-25 08:07 UTC
Requires
- php: >=5.5.9
- lcobucci/jwt: ^3.2
- silex/silex: ^2.1
- symfony/security: ^3.3
Requires (Dev)
- phpunit/phpunit: ^6.2
This package is not auto-updated.
Last update: 2024-09-25 01:34:38 UTC
README
安装
composer require hallboav/silex-jwt-security
使用方法
设置 JSON 网络令牌应用程序(该应用程序扩展了 Silex 的 Application 类)
如果您想使用 JsonWebTokenTrait
特性,则必须执行此操作。
use Hallboav\JsonWebTokenApplication; $app = new JsonWebTokenApplication();
注册服务提供者
use Hallboav\Provider\JsonWebTokenSecurityServiceProvider; $app->register(new JsonWebTokenSecurityServiceProvider());
设置您的 Symfony 的防火墙
use Silex\Provider\SecurityServiceProvider; $providerKey = 'jwt0'; $app['security.user_provider.' . $providerKey] = function ($app) { return $app['security.jwt.user_provider']; }; $app->register(new SecurityServiceProvider(), [ 'security.firewalls' => [ $providerKey => [ 'pattern' => '^/admin', // any url that matches this pattern 'stateless' => true, 'guard' => [ 'authenticators' => [ 'security.jwt.guard_authenticator' ] ] ] ] ]);
如何生成和检索您的 JSON 网络令牌的示例(感谢 Luís Cobucci)
use Symfony\Component\Security\Core\User\User; $app->get('/get-token', function () use ($app) { $user = new User('hall', 'KIPP', ['ROLE_ADMIN']); $token = $app['security.jwt.builder'] ->setExpiration(strtotime('+15 minutes')) ->set('username', $user->getUsername()) ->set('roles', $user->getRoles()) ->sign($app['security.jwt.default_signer'], $app['security.jwt.secret']) ->getToken(); return $app->json(['token' => (string) $token]); }); $app->get('/admin', function () use ($app) { $user = $app['user']; return $app->json([ 'user' => [ 'username' => $user->getUsername(), 'roles' => $user->getRoles(), 'token' => (string) $app->getToken() ] ]); });
就这样!
$app->run();