Невозможно заставить работать тип предоставления учетных данных пользователя

У меня есть приложение Laravel 4.2, в котором я успешно внедрил код авторизации, используя oauth2-server-php. Тем не менее, я не могу заставить работать учетные данные пользователя.

Вот мой код настройки сервера oauth:

App::singleton(
'oauth2',
function () {

$host = Config::get('database.connections.mongodb.host');
$hosts = is_array($host) ? $host : [$host];
$dbName = Config::get('database.connections.mongodb.database');
$dbOptions =
empty( Config::get('database.connections.mongodb.options') ) ? [] : Config::get(
'database.connections.mongodb.options'
);

$mongo = new MongoClient('mongodb://' . implode(',', $hosts) . '/' . $dbName, $dbOptions);
$storage = new OAuth2\Storage\Mongo($mongo->{$dbName});
$server = new OAuth2\Server(
$storage, [
'always_issue_new_refresh_token' => true,
'refresh_token_lifetime'         => 2419200,
]
);

$userStorage = new \Medusa\Oauth\Storage\MedusaUserCredentials();

$server->addStorage($userStorage, 'users');

$userCredentialGrant = new Oauth2\GrantType\UserCredentials($userStorage);

$server->addGrantType(new OAuth2\GrantType\AuthorizationCode($storage));
$server->addGrantType(new OAuth2\GrantType\ClientCredentials($storage));
$server->addGrantType($userCredentialGrant);
$server->addGrantType(new OAuth2\GrantType\RefreshToken($storage));

return $server;
}
);

MedusaUserCredentials имеет следующий код:

namespace Medusa\Oauth\Storage;

use OAuth2\Storage\UserCredentialsInterface;

class MedusaUserCredentials implements UserCredentialsInterface
{

public function checkUserCredentials($username, $password)
{
return Auth::attempt(['email_address' => strtolower($username), 'password' => $password, 'active' => 1]);
}

public function getUserDetails($username)
{
return ['user_id' => $username];
}
}

Когда я отправляю сообщение на веб-сервер по маршруту токена, используя сырую полезную нагрузку

grant_type=password&username=<USERNAME>&password=<PASSWORD>

Я просто получаю страницу входа. Маршрут токена выглядит следующим образом

Route::post(
'oauth/token',
function () {
$bridgedRequest = OAuth2\HttpFoundationBridge\Request::createFromRequest(Request::instance());
$bridgedResponse = new OAuth2\HttpFoundationBridge\Response();

$bridgedResponse = App::make('oauth2')->handleTokenRequest($bridgedRequest, $bridgedResponse);
print_r($bridgedResponse); die();
return $bridgedResponse;
}
);

Что мне не хватает?

Спасибо!

1

Решение

Я нашел проблему — у меня была проблема с пространством имен, которую я должен был решить. По какой-то причине мое приложение вернуло ответ «200 OK» и обычную страницу входа, поэтому я не думал проверять журналы.

Я знаю, плохой разработчик, без печенья!

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]