在Laravel 8中如何验证输入密码与数据库哈希密码的匹配
P粉129731808
P粉129731808 2023-08-28 14:25:49
[PHP讨论组]

如何在Laravel中从给定的请求中验证用户密码?密码是如何与存储在数据库中的密码哈希值进行比较的? ** 这是我的控制器 **

<?php

namespace App\Http\Controllers;


use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;

class MainController extends Controller
{
    function login1(Request $request){
      $username = $request->input('username');
      $password = $request->input('password');

      

      $data = DB::table('users')->where(['username'=>$username, 'password'=>$password])->first();
      if($data == null){
        echo "error";
    
        $notification = array(
                'message' => '用户不存在!',
                'alert-type' => 'error'
            );
            return back()->with($notification);
      }
else{
    
       
            $request->session()->put('user',$data);
            return redirect('dashboard');
      
      
}
}}

P粉129731808
P粉129731808

全部回复(2)
P粉373990857

像这样

$encrypted = Crypt::encrypt('password_name_variable');

P粉071559609

基本上,你想要做的是:

  1. 查询users表中具有给定用户名的用户。
  2. 检查他们的哈希密码是否与提供的密码的哈希相匹配。

所以,你想要首先查询具有给定用户名的用户。然后,在检索到用户并验证其存在之后,你可以检查提供的密码是否与检索到的模型上的哈希密码匹配。

public function login(Request $request): Response
{
    $user = User::where('username', $request->get('username'));

    if (!$user || !Hash::check($request->get('password'), $user->password)) {
        return back()->with([
            'message' => '用户名和/或密码不正确。',
            'alert-type' => 'error'
        ]);
    }

    $request->session()->put('user', $user);

    return redirect('dashboard');
}

然而,在Laravel中有内置的功能可以实现这一点,根据你的需求,这样做可能更简单:

public function login(Request $request): Response
{
  if (!Auth::attempt(['username' => $request->get('username'), 'password' => $request->get('password')]) {
        return back()->with([
            'message' => '用户名和/或密码不正确。',
            'alert-type' => 'error'
        ]);
    }

    return redirect('dashboard');
}

https://laravel.com/api/8.x/Illuminate/Support/Facades/Auth.html#method_attempt

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号