【发布时间】:2019-02-14 16:35:12
【问题描述】:
我一直在寻找所有地方(我检查了所有其他重复的问题和答案),没有运气。我不明白我做错了什么,所有的值都来自帖子,但是 Auth:attempt 一直失败/返回 false,如果我尝试手动实现登录,它不会像我期望的那样进行身份验证,我也这样做必须制作或使用单独的方法,如验证、凭据、用户名等?
这是我的登录控制器>登录方法
public function login(Request $request)
{
$validator = Validator::make($request->all(), [
'usermail' => 'required|max:255',
'password' => 'required_with:usermail',
],[
'password.required_with' => "The password field is empty."
]);
if ($validator->fails()) {
return redirect()
->route('admin.login')
->withErrors($validator)
->withInput();
}
$usermail = $request->get('usermail');
$password = $request->get('password');
$remember = $request->get('rememberMe');
if(filter_var($usermail, FILTER_VALIDATE_EMAIL)) {
$isEmailExist = User::where('user_email',$usermail)->first();
if($isEmailExist != null){
if(Auth::attempt([
'user_email' => $usermail,
'user_pass' => $password
])){
return redirect()->intended('admin/dashboard');
}else{
return back()->with([
'message' => '<strong>ERROR</strong>: The password you entered for the email address <strong>'.$usermail.'</strong> is incorrect. <a href="'.route('admin.password.request').'">Lost your password?</a>'
]);
}
}else{
return back()->with([
'message' => '<strong>ERROR</strong>: Invalid email address.'
]);
}
}else{
$isUsernameExist = User::where('user_login',$usermail)->first();
if($isUsernameExist != null){
if(Auth::attempt([
'user_login' => $usermail,
'user_pass' => $password
],$remember)){
return redirect()->intended('admin/dashboard');
}else{
return back()->with([
'message' => '<strong>ERROR</strong>: The password you entered for the username <strong>'.$usermail.'</strong> is incorrect. <a href="'.route('admin.password.request').'">Lost your password?</a>'
]);
}
}else{
return back()->with([
'message' => '<strong>ERROR</strong>: Invalid username. <a href="'.route('admin.password.request').'">Lost your password?</a>'
]);
}
}
}
这是我的用户迁移架构,
Schema::create('vw_users', function (Blueprint $table) {
$table->bigIncrements('ID');
$table->string('user_login','60')->unique()->default('');
$table->string('user_pass');
$table->string('user_email','100')->unique()->default('');
$table->rememberToken();
});
这是我为用户播种的方法,
User::create([
'user_login' => 'admin',
'user_pass' => Hash::make("123456"),
'user_email' => 'admin@gmail.com',
]);
【问题讨论】:
-
- Auth::attempt 使用 bcrypt,你使用哪个哈希函数?另外,检查 user_pass 字段的长度。
-
哈希::make("123456")
-
默认为 "user_pass" varchar(191)
-
究竟是什么失败了?验证或登录尝试?您是否仅通过传递硬编码的正确凭据单独检查 Auth::attempt?
-
NO 不只验证 auth:attempt 不工作 其他一切工作正常,是的,我尝试硬编码仍然不工作。