前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >总结一下laravel中Hash::make()遇到的坑

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

作者头像
一个淡定的打工菜鸟
发布2018-09-06 17:33:02
3.6K0
发布2018-09-06 17:33:02
举报
文章被收录于专栏:淡定的博客淡定的博客

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

前端界面

代码语言:javascript
复制
{{--修改密码--}}
<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>
{{--修改密码--}}

路由文件

代码语言:javascript
复制
//修改用户密码
Route::post('/changepwd', 'PasswordController@changepwd')->name('changepwd');

Request验证类

代码语言:javascript
复制
<?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是否相同
        ];
    }
}

控制器引入类

代码语言:javascript
复制
use DB;
use Hash;

控制器代码

代码语言:javascript
复制
//修改密码
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不愧为排名第一的框架,果然很优雅!!!!==

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018/06/05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前端界面
  • 路由文件
  • Request验证类
  • 控制器引入类
  • 控制器代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档