专栏首页淡定的博客总结一下laravel中Hash::make()遇到的坑

总结一下laravel中Hash::make()遇到的坑

今天由于项目的需要,博主需要做一个修改密码的功能,项目用到的是laravel框架,但是没想到他里面的Hash::make()跟之前写过的md5()有很大的差别,下面总结一下,项目的具体信息请前往我的github

前端界面

{{--修改密码--}}
<form action="{{ route('changepwd') }}" method="post">
    {{{ csrf_field() }}}
    <div class="layui-form-item">
    <label for="L_nowpass" class="layui-form-label">当前密码</label>
    <div class="layui-input-inline">
      <input type="password" id="L_nowpass" name="oldpass" required lay-verify="required" autocomplete="off" class="layui-input">
    </div>
    </div>
    <div class="layui-form-item">
    <label for="L_pass" class="layui-form-label">新密码</label>
    <div class="layui-input-inline">
      <input type="password" id="L_pass" name="password" required lay-verify="required" autocomplete="off" class="layui-input">
    </div>
    <div class="layui-form-mid layui-word-aux">6到16个字符</div>
    </div>
    <div class="layui-form-item">
    <label for="L_repass" class="layui-form-label">确认密码</label>
    <div class="layui-input-inline">
      <input type="password" id="L_repass" name="password_confirmation" required lay-verify="required" autocomplete="off" class="layui-input">
    </div>
    </div>
    <div class="layui-form-item">
    
    <button class="layui-btn" key="set-mine" lay-filter="*" >确认修改</button>
    </div>
</form>
{{--修改密码--}}

路由文件

//修改用户密码
Route::post('/changepwd', 'PasswordController@changepwd')->name('changepwd');

Request验证类

<?php
namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class PasswordRequest extends FormRequest
{
    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return true;
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return [
            'password'=>'required|min:6|max:16|confirmed',   // confirmed:   password  和  password_confirmation是否相同
        ];
    }
}

控制器引入类

use DB;
use Hash;

控制器代码

//修改密码
public function changepwd(PasswordRequest $req){
    $users = DB::table('users')
                    ->where('id', '=', session('id'))
                    ->first();
    //判断用户输入的密码与数据库的密码是否一致
    // 表单中的密码:$req->password   (原始)
    // 数据库的密码:$user->password (哈希之后 )
    // laravel中 Hash::check(原始,哈希之后)判断是否一致
    if(  Hash::check(  $req->oldpass   ,   $users->password   )  ){
        //更新密码并且保存
        DB::table('users')
            ->where('id', session('id'))
            ->update(['password' => Hash::make($req->password)]);
        // 跳转到 登录页
        return redirect()->route('login');
    }else{
        return back()->withErrors(['oldpass'=>'密码不正确!']);
    }

}

==这里遇到的坑就是laravel框架中,每次hash的值都是不一致的,跟之前写过的md5不一样,md5是唯一的,但是只要保存进去了,就算hash以后的值是不一样的,但是都是代表一个东西的,比如说,你hash的是111111,就算hash两次的值不一致,但是并不会影响你的代码逻辑的,只要正常判断即可,laravel不愧为排名第一的框架,果然很优雅!!!!==

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • html5之自定义视频播放器

    一个淡定的打工菜鸟
  • 正则表达式常用语法总结

    通过在 *、+ 或 ? 限定符之后放置?,该表达式从”贪心”表达式转换为”非贪心”表达式或者最小匹配

    一个淡定的打工菜鸟
  • html5之网络状态检测

    一个淡定的打工菜鸟
  • thymeleaf中使用layui

    头部引入css,尾部引入js,定义两个模板(一个也可以,里面的碎片分开写,我喜欢写两个分别引入),注意th:fragment,fragment即碎片,可以在模板...

    小尘哥
  • Java单体应用 - 项目实战(后台) - 03.后台账户管理 - 04.编辑账户

    原文地址:http://www.work100.net/training/monolithic-project-iot-cloud-admin-manager-...

    光束云
  • 表单数据验证方法(一)—— 使用validate.js实现表单数据验证

     好久没写博客了,真的是罪过,以后不能这样了,只学习不思考,学的都是白搭,希望在博客园能记录下自己学习的点滴,虽然记录的都是些浅显的技术,但能起到巩固自己和稍...

    CherishTheYouth
  • layui修改 form表单的 长度

    Little JAVA
  • Angular 2 + 折腾记 :(7) 初步了解表单:模板驱动及数据驱动及脱坑要点

    表单在整个系统中的作用相当重要,这里主要扯下响应表单的实现方式。 首先需要操作表单的模块引入这两个模块; import { FormsModule, React...

    CRPER
  • angularjs 表单验证

    一、常用的表单验证指令  1. 必填项验证 某个表单输入是否已填写,只要在输入字段元素上添加HTML5标记required即可: <input type="te...

    柴小智
  • SSM框架结合LayUi文件上传模块接入COS对象存储服务

    在日常项目开发中经常会用到图片,视频等文件存储的操作,但是文件如果一直存放在本地服务器中,可以会导致资源浪费,且访问速度也有所限制,这时我们就会考虑CDN加速或...

    sr

扫码关注云+社区

领取腾讯云代金券