在Laravel中检查密码是否正确
在laravel中,我想检查用户是否输入了当前密码,而不是使用存储在该用户数据中的数据库中的密码进行检查。如果正确,则继续,否则给出消息密码不正确 我是新来拉维尔的,所以没有确切的想法 提前谢谢在Laravel中检查密码是否正确,laravel,Laravel,在laravel中,我想检查用户是否输入了当前密码,而不是使用存储在该用户数据中的数据库中的密码进行检查。如果正确,则继续,否则给出消息密码不正确 我是新来拉维尔的,所以没有确切的想法 提前谢谢 $('#pwd').blur(function(){ var oldpwd=$('#pwd').val(); var uid = $('#id').val(); console.log(uid); if(ol
$('#pwd').blur(function(){
var oldpwd=$('#pwd').val();
var uid = $('#id').val();
console.log(uid);
if(oldpwd != "")
{
$.ajax({
url : "{{ url/profile/checkOldPwd}}",
data : { oldpwd:oldpwd , uid:uid },
type : "POST",
success : function(data) {
if(data == 0){
$("#msg-old").show();
$("#msg-old").html("Password is Incorrect!");
$("#pwd").val("");
$("#pwd").focus();
}
else
{
$("#msg-old").hide();
$("#msg-old").html("");
}
}
});
}
});
当用户尝试访问页面时,将其重定向到身份验证页面 执行ajax调用,然后在php中执行以下操作:
public function check(Request $request)
{
if(Hash::check($request->password, $user->password)) {
// They match
} else {
// They don't match
}
}
我还没有测试过,所以可能不起作用
auth()->尝试的结果($request->only('email','password'))
success()
方法中的消息显示给div。如果是错误,则将error()
方法中的错误消息显示给div您可以使用hash:check方法 使用哈希创建密码:
$password = Hash::make('secret');
检查密码:
if (Hash::check('secret', $hashedPassword))
{
// The passwords match...
}
正如Hiren所提到的,您可以使用默认的注册哈希器,因为它被传递给所使用的特定UserProvider。默认值为
illumb\Hashing\BcryptHasher
您可以通过以下几种方式使用它:
$user=user::find($id);
$hasher=app('hash');
if($hasher->check($passwordToCheck',$user->password)){
//成功
}
$user=user::find($id);
if(Hash::check('passwordToCheck',$user->password)){
//成功
}
password\u verify
也可以工作。但是,这是可行的,因为它使用的默认哈希算法是bcryptif(密码验证($passwordToCheck',$user->password)){
//成功
}
就这么做吧
public function authenticateEmployee(array $data){
$email = $data['email'];
$password = $data['password'];
$user = User::where('email', '=', $email)->first(); //get db User data
if(Hash::check($password, $user->password)) {
return response()->json(['status'=>'false','message'=>'password is correct']);
} else {
return 'false';
}
}
if(Hash::check($request->password,Auth::user()->password)){//suces}
我只是尝试使用ajax,但没有了解如何检查,所以你能给出一些想法吗?查看有关授权的更多信息,或者向我们展示你的代码以帮助你。以上是我的ajax代码。这行不通。Bcrypt每次返回不同的字符串,它不像md5
@Dastur谢谢你,你更喜欢哪个?容器外是最优雅/最快的吗?就个人而言,我越来越喜欢容器外(1)@LeonVismer如果数据库中存储的现有密码散列需要重新设置怎么办?@KiranManiya如果调整了工作系数,可以使用hash:needsRehash($hashed)
来检查它。@LeonVismer是的,我知道了。我也更新了答案。也许更好的做法是像这样获取电子邮件$data->get('email')
,而不是$data['email']
?