2015-08-15 2 views
2

В настоящее время я реализую OAuth2 на своем веб-сайте, чтобы пользователь регистрировался внутри приложения для Android. Я хочу изменить базу данных пользователя OAuth2 по умолчанию в свою собственную пользовательскую базу данных. К сожалению, я не могу понять, как это сделать. Это должно быть возможно с переопределением классов и без изменения кода в основной библиотеке, но как это сделать?Пользовательская база данных пользователя OAuth2

Это то, что я в моем server.php файле:

// Autoloading (composer is preferred, but for this example let's just do this) 
require_once('/src/OAuth2/Autoloader.php'); 
OAuth2\Autoloader::register(); 

$storage = new OAuth2\Storage\Pdo(array('dsn' => 'mysql:host=xxxx;dbname=xxxx', 'username' => 'xxxx', 'password' => 'xxxx')); 

// Pass a storage object or array of storage objects to the OAuth2 server class 
$server = new OAuth2\Server($storage); 

// Add the "Password/User Credentials" grant type 
$server->addGrantType(new OAuth2\GrantType\UserCredentials($storage)); 

Так вот я хочу использовать в моей собственной пользовательской таблицы вместо oauth_users таблицы по умолчанию. И поскольку пароли соленые, мне также нужно иметь другую проверку пароля. Я использую библиотеку BShaffer OAuth2: https://github.com/bshaffer/oauth2-server-php

+0

Привет, у меня есть тот же вопрос, на который у вас есть ответ? –

ответ

0

С помощью этой библиотеки легко написать собственный код, поэтому вам не нужно прикасаться к ядру этой библиотеки. Для этой проблемы вам необходимо создать собственный класс хранения, который реализует UserCredentialsInterface. Есть два метода в здесь, которые нужны реализовать себя

public function checkUserCredentials() 

public function getUserDetails() 

Здесь вы можете реализовать логику для проверки данные пользователя и выборок данных пользователя. После этого вам нужно добавить память на сервер OAuth так:

$server = new OAuth2\Server($storage); 
$userStorage = new YourCustomUserStorage(); 
$server->addStorage($userStorage, 'user_credentials'); 

Вам также необходимо передать эту память для любого типа Grant вы добавляете к серверу, в вашем случае выглядит следующим образом:

$server->addGrantType(new OAuth2\GrantType\UserCredentials($userStorage)); 
Смежные вопросы