我正在使用客户端的现有应用程序,并且用户名/电子邮件在数据库中已加密。我需要使用Laravel Passeport为外部应用程序/网站做一个api。
应用程序/网站将调用http://localhost:81/oauth/token,它们将发送参数client_id
,client_secret
,username
和password
。我的问题出在username
参数上,因为用户名在我的应用程序中被加密。如何使用laravel passeport加密其清晰的(未加密的)用户名?
答案 0 :(得分:0)
如果您查看inside passport,将注意到它在模型中查找了方法“ findForPassport”的存在。
只需在您的User
模型中定义方法并应用解码算法,然后在数据库中选择用户即可。
<?php
namespace App;
use Laravel\Passport\HasApiTokens;
use Illuminate\Notifications\Notifiable;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
use HasApiTokens, Notifiable, SoftDeletes;
/**
*
* @param string $username
* @return null|App\User
*/
public function findForPassport($username)
{
$decoded = my_decode_function($username);
return $this->where('username', $decoded)
->first();
}