gpt4 book ai didi

php - 自定义 OAuth2 用户数据库

转载 作者:搜寻专家 更新时间:2023-10-30 20:53:45 25 4
gpt4 key购买 nike

我目前正在我的网站中实现 OAuth2,以保持用户在 Android 应用程序中登录。我想将默认的 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

最佳答案

有了这个库,您可以轻松编写自定义代码,因此您不必触及这个库的核心。对于这个问题,您必须创建一个自定义存储类来实现 UserCredentialsInterface .这里有两个方法需要自己实现

public function checkUserCredentials()

public function getUserDetails()

您可以在此处实现检查用户详细信息和获取用户详细信息的逻辑。在此之后,您需要像这样将此存储添加到 oAuth 服务器:

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

您还需要将此存储传递给要添加到服务器的任何授权类型,在您的情况下它看起来像这样:

$server->addGrantType(new OAuth2\GrantType\UserCredentials($userStorage));

关于php - 自定义 OAuth2 用户数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32023991/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com