2017-08-27 145 views
0

如何更改Laravel中auth的密碼加密算法。 我看到,在寄存器控制器有這樣的功能:Laravel 5.4更改密碼加密方法

protected function create(array $data) 
    { 
     return User::create([ 
      'username' => $data['username'], 
      'email' => $data['email'], 
      'password' => bcrypt($data['password']), 
     ]); 
    } 

,我可以在這裏改變bcrypt功能,但如何讓登錄請與我自定義的散列算法的密碼,我將使?

回答

0

您需要創建自己的HashServiceProvider(及其服務提供商),因此使用人員能夠創建自己的(你可以保持原來的稱呼它)

$ artisan make:provider HashServiceProvider 

現在複製大多數股票HashServiceProvider的身體(可以在\Illuminate\Hashing\HashServiceProvider.php中找到股票),並修復名稱空間和導入。現在轉到config/app.php並找到HashServiceProvider並更改您自己的服務提供商的庫存HashServiceProvider,因爲您完全按照我的指導進行操作,因此您應該注意到沒有改變。

現在你必須創建(實現)你自己的哈希函數。你有兩個選擇:

A.延長原BcryptHasher這種方法的

<?php 
namespace Your\Namespaced\Hasher; 
use Illuminate\Hashing\BcryptHasher as OriginalHasher; 
class BcryptHasher extends OriginalHasher 
{...} // and change what you need 

例子可以在Kyslik/django-bcrypt

B.找到創造新的類,並實現Hasher interface

<?php 
namespace Your\Namespaced\Hasher; 
use Illuminate\Contracts\Hashing\Hasher; 
class MyHasher implements Hasher {...} // IDE should scream at you with methods you need to implement 

最後在你的服務提供者(HashServiceProvider)中更改register()方法來返回你的實現的哈希。

做一個$ composer dump-autoload,你可以享受自己閃亮的哈希。