PHP code example of anibalsanchez / security-jwt-service-provider_s2p3f5
1. Go to this page and download the library: Download anibalsanchez/security-jwt-service-provider_s2p3f5 library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
anibalsanchez / security-jwt-service-provider_s2p3f5 example snippets
$app = new Silex\Application(['debug' => true]);
$app['security.jwt'] = [
'secret_key' => 'Very_secret_key',
'life_time' => 86400,
'options' => [
'username_claim' => 'name', // default name, option specifying claim containing username
'header_name' => 'X-Access-Token', // default null, option for usage normal oauth2 header
'token_prefix' => 'Bearer',
]
];
$app['users'] = function () use ($app) {
$users = [
'admin' => array(
'roles' => array('ROLE_ADMIN'),
// raw password is foo
'password' => '5FZ2Z8QIkA7UTZ4BYkoC+GsReLf569mSKDsfods6LYQ8t+a8EW9oaircfMpmaLbPBh4FOBiiFyLfuZmTSUwzZg==',
'enabled' => true
),
];
return new InMemoryUserProvider($users);
};
$app['security.firewalls'] = array(
'login' => [
'pattern' => 'login|register|oauth',
'anonymous' => true,
],
'secured' => array(
'pattern' => '^.*$',
'logout' => array('logout_path' => '/logout'),
'users' => $app['users'],
'jwt' => array(
'use_forward' => true,
'
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Security\Core\Exception\UsernameNotFoundException;
use Symfony\Component\Security\Core\User\InMemoryUserProvider;
use Symfony\Component\Security\Core\User\User;
$app->post('/api/login', function(Request $request) use ($app){
$vars = json_decode($request->getContent(), true);
try {
if (empty($vars['_username']) || empty($vars['_password'])) {
throw new UsernameNotFoundException(sprintf('Username "%s" does not exist.', $vars['_username']));
}
/**
* @var $user User
*/
$user = $app['users']->loadUserByUsername($vars['_username']);
if (! $app['security.encoder.digest']->isPasswordValid($user->getPassword(), $vars['_password'], '')) {
throw new UsernameNotFoundException(sprintf('Username "%s" does not exist.', $vars['_username']));
} else {
$response = [
'success' => true,
'token' => $app['security.jwt.encoder']->encode(['name' => $user->getUsername()]),
];
}
} catch (UsernameNotFoundException $e) {
$response = [
'success' => false,
'error' => 'Invalid credentials',
];
}
return $app->json($response, ($response['success'] == true ? Response::HTTP_OK : Response::HTTP_BAD_REQUEST));
});
$app->get('/api/protected_resource', function() use ($app){
return $app->json(['hello' => 'world']);
});
$app->run();
php
$app->register(new Silex\Provider\SecurityServiceProvider());
$app->register(new Silex\Provider\SecurityJWTServiceProvider());