我想知道是否有人可以帮助我,我如何设置密码授予类型回调?我有一个工作的OAuth2.0提供程序服务器在我的本地主机上运行,我只需要在请求访问令牌时验证用户的凭据。
我想我只需要设置一个回调函数。下面是我的代码:
$app->setService('oauth', function() use ($config) {
$oauthdb = new 'Twm'Db'Adapter'Pdo'Mssql(
$config
->database
->oauth
->toArray()
);
$server = new 'League'OAuth2'Server'Authorization(
new 'Oauth2'Server'Storage'Pdo'Mssql'Client($oauthdb),
new 'Oauth2'Server'Storage'Pdo'Mssql'Session($oauthdb),
new 'Oauth2'Server'Storage'Pdo'Mssql'Scope($oauthdb)
);
$request = new 'Oauth2'Server'Storage'Pdo'Mssql'Request();
$server->setRequest($request);
// do i set a callback here???
$server->setAccessTokenTTL(86400);
$server->addGrantType(new League'OAuth2'Server'Grant'Password($server));
return $server;
});
如果有人能帮助我,我很感激,谢谢!所以我在这里阅读了这个主题:https://github.com/thephpleague/oauth2-server/issues/97看起来我确实需要设置某种回调函数来验证用户。我只是需要一点帮助。
感谢Alex,我实现了下面的密码验证例程,并且它工作了。
$app->setService('oauth', function() use ($config, $app) {
$oauthdb = new 'Twm'Db'Adapter'Pdo'Mssql(
(array) $config->database->oauth
);
$server = new 'League'OAuth2'Server'Authorization(
new 'Oauth2'Server'Storage'Pdo'Mssql'Client($oauthdb),
new 'Oauth2'Server'Storage'Pdo'Mssql'Session($oauthdb),
new 'Oauth2'Server'Storage'Pdo'Mssql'Scope($oauthdb)
);
# Not required as it called directly from original code
# $request = new 'League'OAuth2'Server'Util'Request();
# add these 2 lines code if you want to use my own Request otherwise comment it
$request = new 'Oauth2'Server'Storage'Pdo'Mssql'Request();
$server->setRequest($request);
$server->setAccessTokenTTL(86400);
$grant = new League'OAuth2'Server'Grant'Password();
$grant->setVerifyCredentialsCallback(function($username, $password){
//echo "it works! ". $username . ' : ' . $password;
// if verified, then return true
// else return false
});
$server->addGrantType($grant);
return $server;
});
您需要在grant上调用setVerifyCredentialsCallback($callback)
方法。
$request = new 'Oauth2'Server'Storage'Pdo'Mssql'Request();
$server->setRequest($request);
$server->setAccessTokenTTL(86400);
$grant = new League'OAuth2'Server'Grant'Password($server);
$grant->setVerifyCredentialsCallback(function ($username, $password) {
// your logic here - must return a user ID if credentials are valid or false if not
});
$server->addGrantType();
return $server;