“这些凭据与我们的记录不符。” Laravel 5.3

时间:2018-03-05 04:28:24

标签: php laravel

我尝试通过Dashboard Admin创建更改密码成员的功能,当我尝试登录然后得到此错误,我确定我输入正确的值

这是我更新会员密码的功能

public function update(Request $request, $id)
{
  $rules = array(
      'username'        => 'required|unique:members,username,'.$id,
      'email'           => 'required|unique:members,email,'.$id,
      'password'        => 'min:8',
      'retype_password' => 'min:8|same:password'
  );
  $validator = Validator::make(Input::all(), $rules);

  // process the login
  if ($validator->fails()) {
      return redirect()->back()->withErrors($validator)->withInput();
  } else {

      // Input
      $username       = Input::get('username');
      $email          = Input::get('email');
      $now            = new DateTime();

      // get old password
      $members = members::where('id',$id)->first();

      if (!empty('password') && !empty('retype_password')) {
        $password = $members->password;
      }else{
        $password = bcrypt(Input::get('password'));
      }


      // store
      $store = members::find($id);
      $store->status       = 1;
      $store->username     = $username;
      $store->email        = $email;
      $store->password     = $password;
      $store->updated_at   = new DateTime();
      $store->save();
      // redirect
      return redirect('system/members')->with('success','Data successfully updated');
  }
}

这是模特成员

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use App\Notifications\MemberResetPasswordNotification;

class members extends User
{
    protected $table = "members";

    protected $fillable = [
        'username', 'email', 'password',
    ];
    /**
     * Send the password reset notification.
     *
     * @param  string  $token
     * @return void
     */
public function sendPasswordResetNotification($token)
{
    $this->notify(new MemberResetPasswordNotification($token));
}
}

这是我的登录功能:

public function login(Request $request)
{
    $this->validateLogin($request);

    // If the class is using the ThrottlesLogins trait, we can automatically throttle
    // the login attempts for this application. We'll key this by the username and
    // the IP address of the client making these requests into this application.
    if ($this->hasTooManyLoginAttempts($request)) {
        $this->fireLockoutEvent($request);

        return $this->sendLockoutResponse($request);
    }

    if ($this->attemptLogin($request)) {
        return $this->sendLoginResponse($request);
    }

    // If the login attempt was unsuccessful we will increment the number of attempts
    // to login and redirect the user back to the login form. Of course, when this
    // user surpasses their maximum number of attempts they will get locked out.
    $this->incrementLoginAttempts($request);
    return $this->sendFailedLoginResponse($request);
}

对我来说有什么解决方案吗?

3 个答案:

答案 0 :(得分:1)

更改逻辑(if / else)并且没有empty('password')empty('retype_password') 等字段

if (!empty(Input::get('password')) && !empty(Input::get('retype_password'))) {
    # new password
    $password = Hash::make(Input::get('password')); 
}else{
    # old Password
    $password = $members->password;
}

确保此use Illuminate\Support\Facades\Hash;位于顶部

密码重新检查Laravel是最简单的方法。

格式

<input type="password" name="password" >
<input type="password" name="password_confirmation" > # this should be password_confirmation retype_password filed in yours

在控制器中

只需添加此规则

即可
'password'         => 'required|min:8|confirmed', # just add confirmed thats it

修改

使用此功能登录

$username = Input::get('username');
$password = Input::get('password');

if (!Auth::attempt([ 'email' => $username, 'password' => $password])) {
    # error
    Session::flash('error', 'Invalid Username or Password !');

    return Redirect::to('admin');
}
else {
    # success
    return Redirect::to('admin/dashboard');
}

答案 1 :(得分:0)

您应该更改logic

if (empty($request->password) && empty($request->retype_password)) {
    $password = $members->password;
  }else{
    $password = bcrypt(Input::get('password'));
  }

答案 2 :(得分:-1)

我认为你可以像这样使用if条件

if ($request->input('password') && $request->input('retype_password')) {
        $password = bcrypt($request->input('password'));
      }else{
        $password = $members->password;
      }

希望这有帮助