joa*_*uer 6 php oauth laravel laravel-passport
所以,我正在使用Laravel + Passport,到目前为止工作正常.
但是,我想对护照代码进行一些小改动(好吧,不是在供应商文件夹中,我希望),一旦我要求用户更改密码,以防他第一次登录.
那么,我需要的是两件事(我相信):
1 - 如何在oauth/token响应中再添加一个信息?与access_token一起,我想从DB中添加一个需要NewPassword = true/false的列.
2 - 如果needsNewPassword为true,则应用程序将重定向到另一个屏幕,用户将在该屏幕上设置新密码.我将设置新密码,删除needsNewPassword的标志并向用户发回新的access_token.然后,用户将仅使用该access_token.如何重新生成新的access_token?
谢谢你的帮助!若昂
对,
我回答了我自己的问题,以防有人需要这样做.也许不是最好的方式,但是正在发挥作用.我做的是:
Route::post('/login', 'Auth\LoginController@apiLogin');在该方法中,您对oauth/token执行请求,并在结果中添加所需的字段.测试
function apiLogin(Request $request) {
$tokenRequest = $request->create('/oauth/token', 'POST', $request->all());
$request->request->add([
"client_id" => 'your_client_id',
"client_secret" => 'your_client_secret',
"grant_type" => 'password',
"code" => '*',
]);
$response = Route::dispatch($tokenRequest);
$json = (array) json_decode($response->getContent());
$json['new_value'] = '123456';
$response->setContent(json_encode($json));
return $response
}
Run Code Online (Sandbox Code Playgroud)
这对我有用.在我的情况下,我也只有一个应用程序,所以我的client_id,client_secret,grant_type和代码都添加到服务器端.客户端只需要传递用户名(或电子邮件,取决于您使用的是什么)和密码,然后它将获得access_token和我想要发送的其他信息.希望这也有助于其他人.
干杯,joao