【发布时间】:2018-09-28 06:44:36
【问题描述】:
我在 Laravel 中有两种方法 singup 和 signin。使用hash() 密码加密方法。但是有两种方法的两个输出(signup 和signin)。
假设我输入了一个名为“abc”的密码,并且从signup 控制器方法中我得到了哈希加密值
$2y$10$fNfBqMh8vqdTkvLJcv0YI.9TLQr4/T4V38qRMgm6aWkanL8a1rCwW
对于相同的输入值,我从signin 方法得到不同的输出
$2y$10$u1fmJjQYKFmT79bB7nrD1.npDrn14YXkCQt.drxgoHURsOwrM319m
这是我的signupform
public function signin(LoginFormValidation $request)
{
$data = new User();
$email = $request->email;
$password = Hash::make($request->password);
echo $password;
}
public function signup(RegistrationFormValidation $request)
{
$data = new User();
$email = $request->email;
$password = Hash::make($request->password);
echo $password;
}
signup来自
<form class="cd-signin-modal__form" action="{{ url('/signup') }}" method="GET" id="registration-form">
{{ csrf_field() }}
<p class="cd-signin-modal__fieldset">
<label class="cd-signin-modal__label cd-signin-modal__label--email cd-signin-modal__label--image-replace" for="signup-email" id="email">E-mail</label>
<input class="cd-signin-modal__input cd-signin-modal__input--full-width cd-signin-modal__input--has-padding cd-signin-modal__input--has-border" id="reg_email" type="email" placeholder="E-mail" name="reg_email">
<div id="reg_email_error" class="val_error"></div>
</p>
<p class="cd-signin-modal__fieldset">
<label class="cd-signin-modal__label cd-signin-modal__label--password cd-signin-modal__label--image-replace" for="signup-password" id="password">Password</label>
<input class="cd-signin-modal__input cd-signin-modal__input--full-width cd-signin-modal__input--has-padding cd-signin-modal__input--has-border" id="reg_password" type="text" placeholder="Password" name="reg_password">
<div id="reg_password_error" class="val_error"></div>
</p>
<p class="cd-signin-modal__fieldset">
<input id="signup" class="cd-signin-modal__input cd-signin-modal__input--full-width cd-signin-modal__input--has-padding" type="submit" value="Create account">
</p>
signin 表单
<form class="cd-signin-modal__form" action="{{ url('/signin') }}" method="GET" id="login-form">
{{ csrf_field() }}
<p class="cd-signin-modal__fieldset">
<label class="cd-signin-modal__label cd-signin-modal__label--email cd-signin-modal__label--image-replace" for="signin-email">E-mail</label>
<input class="cd-signin-modal__input cd-signin-modal__input--full-width cd-signin-modal__input--has-padding cd-signin-modal__input--has-border" id="login_email" type="email" placeholder="E-mail">
<div id="login_email_error" class="val_error"></div>
</p>
<p class="cd-signin-modal__fieldset">
<label class="cd-signin-modal__label cd-signin-modal__label--password cd-signin-modal__label--image-replace" for="signin-password">Password</label>
<input class="cd-signin-modal__input cd-signin-modal__input--full-width cd-signin-modal__input--has-padding cd-signin-modal__input--has-border" id="login_password" type="text" placeholder="Password">
<div id="login_password_error" class="val_error"></div>
</p>
<p class="cd-signin-modal__fieldset">
<input id="signin" class="cd-signin-modal__input cd-signin-modal__input--full-width" type="submit" value="Login">
</p>
【问题讨论】:
-
Laravel 使用
bcrypt哈希算法生成安全哈希。首先bcrypt不是加密算法,所以不要与相同的输出混淆。第二个bcrypt按设计不会为每个输入字符串生成相同的哈希值。所以不用担心它需要比较。 -
只是好奇为什么相同的代码具有相同的参数会生成不同的值
-
因为如果输出不匹配那么我应该如何使用密码在数据库中查询以找出用户?
-
@bigwolk....是的...我的问题就是这一点...为什么不同!
-
@bigwolk 因为无论您是否指定,
bcrypt总是生成随机盐。拉夫,您不必担心,只需检查Hash::check(),您会没事的
标签: javascript php html laravel