【问题标题】:passwords dont get hashed in laravel密码不会在 laravel 中得到哈希
【发布时间】:2020-05-22 10:56:03
【问题描述】:

正如标题所说..

我的项目一直在正确地散列密码,直到最近我注意到新用户的密码没有被散列,而我应该使用 Hash::make 并且我在控制器顶部使用了 Hash。请帮忙... 这是我的用户控制器 如果这有帮助,我正在使用 laravel 5.6...

namespace App\Http\Controllers\Auth;

use App\User;
use Hash;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Validator;
use Illuminate\Foundation\Auth\RegistersUsers;
use Illuminate\Http\Request;
class RegisterController extends Controller
{
    use RegistersUsers;
    protected $redirectPath = '/admin';
    protected function validator(array $data)
    {
        return Validator::make($data, [
            'f_name' => 'required|string|max:255',
            'user_id' => 'required|string|max:255|unique:person',
            'm_name' => 'required|string|max:255',
            'g_name' => 'required|string|max:255',
            's_name' => 'required|string|max:255',
            'address' => 'required|string|max:255',
            'email' => 'required|string|email|max:255|unique:person',
            'field_of_study'=> 'string|max:255',
            'gender' => 'required|boolean',
            'b_date' => 'required|date|max:255',
            'type' => 'required|integer|max:3',
            'job_title' => 'string|max:255',
            'orgnaization' => 'required|string|max:255',
            'sector' => 'boolean',
            'mobile' => 'required|string|min:10', 
            'password' =>'required|string|min:10',

        ]);
    }

    protected function create(array $data)
    {
            return User::create([
            'f_name' => $data['f_name'],
            'user_id' => $data['user_id'],
            'm_name' => $data['m_name'],
            'g_name' => $data['g_name'],
            's_name' => $data['s_name'],
            'address' => $data['address'],
            'field_of_study' => $data['field_of_study'],
            'gender' => $data['gender'],
            'b_date' => $data['b_date'],
            'type' => $data['type'],
            'job_title' => $data['job_title'],
            'orgnaization' => $data['orgnaization'],
            'mobile' => $data['mobile'],
            'sector' => $data['sector'],
            'email' => $data['email'],
            'password' => Hash::make($data['password']),
        ]); 

    }

     public function register(Request $request)
     {

          if($user=User::create($request->all()))
          {
              return redirect('Admin')->with('message', 'done');
          }
            else
            {
                return redirect()->back()->with('error', 'error');
            }          
     }
}

这是我的模型

protected $fillable = [
    'f_name','m_name','g_name','s_name','address','user_id','field_of_study','gender','b_date','type','job_title','orgnaization','mobile','sector', 'email', 'password',
];
    protected $hidden = [
    'password', 
];

【问题讨论】:

  • User::create($request->all()) ... 没有发生散列
  • 'password' => Hash::make($data['password']), 我正在那里散列
  • 不,你永远不会调用你正在调用 User::create 的那个方法,这不是那个控制器上的 create 方法。
  • 试过这个``` $request->password = Hash::make($request->password); ```它也没有工作
  • 因为这不是您在请求中设置变量的方式......只需按照默认方式调用控制器上的 create 方法

标签: php laravel laravel-5


【解决方案1】:

使用

if ($user = $this->create($request->all()))

而不是

if($user=User::create($request->all()))

你没有调用你的控制器函数,你只是在做 User::create。这就是为什么您的所有数据都没有被散列

【讨论】:

    【解决方案2】:

    也许这段代码对你有帮助:

    $inputData = $request->all();
    $inputData['password'] = bcrypt($request->password);
    User::create($inputData);
    

    【讨论】:

      猜你喜欢
      • 2017-11-30
      • 1970-01-01
      • 2015-04-05
      • 1970-01-01
      • 2015-12-18
      • 2021-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多