Laravel 5:使用 SHA1 而不是 Bcrypt
Laravel 5: Using SHA1 instead of Bcrypt
我正在尝试扩展 laravel 5 中的默认 Bcrypt HashServiceProvider
,以改用 SHA1 加密。
使用这个问题的答案:How to use SHA1 encryption instead of BCrypt in Laravel 4? and the official documentation at http://laravel.com/docs/5.0/extending#container-based-extension,我成功编写了以下代码:
在app/Providers/ShaHashServiceProvider.php
使用 App\ShaHasher;
使用 Illuminate\Hashing\HashServiceProvider;
class ShaHashServiceProvider 扩展了 HashServiceProvider {
public 函数引导()
{
parent::boot();
$this->app->bindShared('hash', 函数()
{
return 新的 ShaHasher();
});
}
}
在app/ShaHasher.php
使用 Illuminate\Contracts\Hashing\Hasher 作为 HasherContract;
class ShaHasher 实现 HasherContract {
public function make($value, array $options = array()) {
$value = env('SALT', '').$value;
return sha1($值);
}
public 函数检查($value, $hashedValue, array $options = array()) {
return $this->make($value) === $hashedValue;
}
public function needsRehash($hashedValue, array $options = array()) {
return假;
}
}
在app/config/app.php
'providers' => [
...
//'Illuminate\Hashing\HashServiceProvider',
'App\Providers\ShaHashServiceProvider',
...
],
我也在使用开箱即用的 Laravels AuthController
来处理登录。
但似乎并没有如我所愿。我第一次尝试登录时,一切正常。然后我注销了,从那以后,每次尝试登录都失败了。
我没有收到任何错误,只是收到“糟糕!您的输入有一些问题。这些凭据与我们的记录不匹配。”消息。
我想知道到底出了什么问题,哪里出了问题?希望各位大神帮帮我!
我自己解决了这个问题:-)
在app/Providers/ShaHashServiceProvider.php中我覆盖了错误的方法boot()
,而实际上是register()
我应该覆盖。
use App\ShaHasher;
use Illuminate\Hashing\HashServiceProvider;
class ShaHashServiceProvider extends HashServiceProvider {
public function register()
{
$this->app->singleton('hash', function() { return new ShaHasher; });
}
}
我正在尝试扩展 laravel 5 中的默认 Bcrypt HashServiceProvider
,以改用 SHA1 加密。
使用这个问题的答案:How to use SHA1 encryption instead of BCrypt in Laravel 4? and the official documentation at http://laravel.com/docs/5.0/extending#container-based-extension,我成功编写了以下代码:
在app/Providers/ShaHashServiceProvider.php
使用 App\ShaHasher; 使用 Illuminate\Hashing\HashServiceProvider; class ShaHashServiceProvider 扩展了 HashServiceProvider { public 函数引导() { parent::boot(); $this->app->bindShared('hash', 函数() { return 新的 ShaHasher(); }); } }
在app/ShaHasher.php
使用 Illuminate\Contracts\Hashing\Hasher 作为 HasherContract; class ShaHasher 实现 HasherContract { public function make($value, array $options = array()) { $value = env('SALT', '').$value; return sha1($值); } public 函数检查($value, $hashedValue, array $options = array()) { return $this->make($value) === $hashedValue; } public function needsRehash($hashedValue, array $options = array()) { return假; } }
在app/config/app.php
'providers' => [ ... //'Illuminate\Hashing\HashServiceProvider', 'App\Providers\ShaHashServiceProvider', ... ],
我也在使用开箱即用的 Laravels AuthController
来处理登录。
但似乎并没有如我所愿。我第一次尝试登录时,一切正常。然后我注销了,从那以后,每次尝试登录都失败了。
我没有收到任何错误,只是收到“糟糕!您的输入有一些问题。这些凭据与我们的记录不匹配。”消息。
我想知道到底出了什么问题,哪里出了问题?希望各位大神帮帮我!
我自己解决了这个问题:-)
在app/Providers/ShaHashServiceProvider.php中我覆盖了错误的方法boot()
,而实际上是register()
我应该覆盖。
use App\ShaHasher; use Illuminate\Hashing\HashServiceProvider; class ShaHashServiceProvider extends HashServiceProvider { public function register() { $this->app->singleton('hash', function() { return new ShaHasher; }); } }