我一直在到处看(我检查了所有其他重复的问题和答案),但不走运。我不明白我在做什么错,所有值都来自帖子,但是Auth:attempt一直失败/返回假,如果我尝试手动实现登录,它将无法按照我的期望进行身份验证,必须制定或使用单独的方法,例如用于验证,凭据,用户名..etc?
这是我的登录控制器>登录方法
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',
]);
答案 0 :(得分:0)
OK OK OK, 我成功了,我认为在laravel框架中,我们只能在数据库身份验证表中为密码“ password”字段创建列名。
我更新了以下更改:-
在用户模型中添加了以下代码:-
use Illuminate\Notifications\Notifiable;
class User extends Authenticatable
{
use Notifiable;
...
}
我检查了两次以确认,所以我恢复了原先的操作。
如果我对任何人都有意义,请让我知道并帮助我理解。 我看过类似Laravel: How can i change the default Auth Password field name这样的帖子 我能否拥有所有laravel预定义库和功能的参考书或博客?我知道供应商文件夹充满了惊喜,但仍然需要更多参考。
非常感谢您的宝贵时间。