2017-08-27 95 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,你可以享受自己闪亮的哈希。