Php Own users表,而不是oauth_客户端,带有用于Lumen的OAuth2服务器

Php Own users表,而不是oauth_客户端,带有用于Lumen的OAuth2服务器,php,oauth,oauth-2.0,lumen,lumen-5.2,Php,Oauth,Oauth 2.0,Lumen,Lumen 5.2,我已经用这个在我的LumenAPI中成功地实现了OAuth2服务器。本教程使用 不幸的是,现在还没有 在我的数据库中,现在有oauth_clients表。但我也有自己的表用户。还有一些关于用户的更多信息。所有实体都引用此表 现在,我想检查users表中的凭证,而不是oauth\u客户机的凭证。这可能吗?oauth\u clients表仅用于管理客户端id和客户端机密(以及作用域等) 您需要使用PasswordGrant而不是ClientCredentialGrant来验证用户(从而处理用户表以及

我已经用这个在我的LumenAPI中成功地实现了OAuth2服务器。本教程使用

不幸的是,现在还没有

在我的数据库中,现在有oauth_clients表。但我也有自己的表用户。还有一些关于用户的更多信息。所有实体都引用此表


现在,我想检查users表中的凭证,而不是oauth\u客户机的凭证。这可能吗?

oauth\u clients表仅用于管理客户端id和客户端机密(以及作用域等)

您需要使用PasswordGrant而不是ClientCredentialGrant来验证用户(从而处理用户表以及oauth_客户端

请参阅:以了解更多详细信息

PS:在Lumen中,您可能会遇到以下异常:

  if (Auth::once($credentials)) {
      return Auth::user()->id;
  }
因此,您需要以类似以下方式重写它:

$user = User::where('username', strtolower($username))->first();

if (!isset($user)) {
    return null;
}

if (app('hash')->check($password, $user->getAuthPassword())) {
    return $user->id;
}

return null;
注意:您仍然需要至少定义了一个client\u id/client\u secret组合的oauth\u clients表(注意secret不是散列,应该是普通的)

设置后,您将获得如下访问令牌(不完全是这样,取决于您的实现):

curl -X POST http://yourapp/access_token -d "grant_type=password&client_id=test&client_secret=testsecret&username=testuser&password=testpass"