【问题标题】:Deal with encrypted username/email with Laravel passport使用 Laravel 护照处理加密的用户名/电子邮件
【发布时间】:2018-12-25 13:58:34
【问题描述】:

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

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

【问题讨论】:

    标签: php laravel encryption laravel-passport


    【解决方案1】:

    如果你看一下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();
        }
    

    【讨论】:

    • 嗯,也许这可行,但我的用户名在数据库中是加密的。我需要加密用户名,然后检查它是否在数据库中匹配,但加密总是会生成一个不同的字符串...
    猜你喜欢
    • 2018-05-17
    • 2016-09-24
    • 1970-01-01
    • 1970-01-01
    • 2020-02-28
    • 1970-01-01
    • 2016-09-25
    • 2018-05-12
    • 1970-01-01
    相关资源
    最近更新 更多