【发布时间】:2017-11-12 05:33:09
【问题描述】:
我正在使用 laravel API 制作一个移动应用程序,我看到自 Laravel 5.3(?)以来,他们添加了一个名为“Passport”的东西,用于处理应用程序的 OAuth2/验证,所以我想我会尝试一下。在使用 Laravel Passport 文档 (https://laravel.com/docs/5.4/passport) 完成设置后,我遵循了几个不同的解释来说明如何让它工作。现在这是我根据其他教程/ SO 文章提出的代码
1.) 用于创建用户/oAuth2 客户端的控制器
class OAuthController extends Controller
{
public function registerUser(Request $request){
$email = $request->email;
$password = $request->password;
$name = $request->name;
$user = User::create([
'name' => $name,
'email' => $email,
'password' => bcrypt($password)
]);
$oAuthClient = new OAuthClient();
$oAuthClient->user_id = $user->id;
$oAuthClient->id = $user->email;
$oAuthClient->name = $user->name;
$oAuthClient->secret = base64_encode(hash_hmac('sha256',$password, 'secret', true));
$oAuthClient->password_client=1;
$oAuthClient->redirect = '';
$oAuthClient->personal_access_client = 0;
$oAuthClient->revoked = 0;
$oAuthClient->save();
return response()->json(['message', 'User successfully created']);
}
}
2.) 我为引用 oauth_clients 表所做的模型
use Illuminate\Database\Eloquent\Model;
class OAuthClient extends Model
{
protected $table = 'oauth_clients';
}
3.) 我将 oauth_clients 表的主键从递增整数更改为用户电子邮件。我基本上只是在关注这篇 SO 文章 Laravel Passport Password Grant Tokens: own mobile app
4.) 创建用户/oauth_client 后,通过 POSTMAN 检索令牌,并使用参数向 oauth/token 发送请求
问题是,这对我来说真的很不对劲。 oauth_clients 上有一个 user_id 列,所以它真的让我相信在尝试获取 oauth_client 令牌时,我应该能够执行一些发布请求,它将带用户然后获取关联的 oauth_client,对吗?
在我看来,我应该如何使用 Passport 为我的移动应用程序进行用户身份验证的意义如下: 1.) 注册新用户
2.) 注册用户时,为该用户创建 oauth_client
3.) 登录时,验证用户电子邮件/密码后,查找 oauth_client,然后检索 oath_client 令牌
4.) 对 API 的任何请求使用 oauth_client 令牌,然后再发送给经过验证的经过身份验证的用户。
这是正确的思考方式吗?我确信这很明显,但这个过程让我感到困惑,所以任何指导都将不胜感激。
【问题讨论】:
标签: laravel api oauth-2.0 laravel-passport