使用Laravel护照处理加密的用户名/电子邮件

时间:2018-07-17 19:06:21

标签: php laravel encryption laravel-passport

我正在使用客户端的现有应用程序,并且用户名/电子邮件在数据库中已加密。我需要使用Laravel Passeport为外部应用程序/网站做一个api。

应用程序/网站将调用http://localhost:81/oauth/token,它们将发送参数client_idclient_secretusernamepassword。我的问题出在username参数上,因为用户名在我的应用程序中被加密。如何使用laravel passeport加密其清晰的(未加密的)用户名?

1 个答案:

答案 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();
    }