我有通過從我的視圖發送到控制器的發佈請求傳遞的用戶名和密碼。負責處理帖子請求的控制器:無法驗證Laravel中的用戶:'無效的用戶名或密碼'
public function postLogin(Request $request) {
$this->validate($request, [
'username' => 'required',
'password' => 'required'
]);
if (!Auth::attempt([
'username' => $request['username'],
'password' => $request['password'] ])) {
return redirect()->back()->with(['fail' => 'invalid username or password']);
}
return redirect()->route('auth.dashboard');
}
問題是我總是收到'失敗'消息:'無效的用戶名或密碼'。
我看着phpmyadmin裏面的表,用戶名和密碼非常簡單(用戶名:Admin &密碼:12345)。
這是管理員表的數據庫:
class CreateAdminsTable extends Migration
{
public function up()
{
Schema::create('admins', function (Blueprint $table) {
$table->increments('id');
$table->timestamps();
$table->string('username')->unique();
$table->string('password');
$table->rememberToken();
});
}
public function down()
{
Schema::drop('admins');
}
}
作爲參考,我使用Laravel 5.2
更新1:在使用者經由註冊控制器,其存儲的用戶名中創建和密碼在數據庫中。這裏是控制器:
public function postRegister(Request $request) {
$admin = new Admin();
$this->validate($request, [
'username' => 'required|unique:admins|max:30|min:3',
'password' => 'required|min:5',
'password_confirm' => 'required'
]);
$password = $request['password'];
$passwordConfirm = $request['password_confirm'];
if ($password !== $passwordConfirm) {
return redirect()->back()->with(['fail' => 'password fields do not match!']);
}
$hashedPassword = password_hash($password, PASSWORD_BCRYPT);
$admin->username = $request['username'];
$admin->password = $hashedPassword;
$admin->save();
return redirect()->route('index')->with(['success' => 'Successfully created account!']);
}
我更喜歡使用Hash :: make而不是password_hash。因爲在傳遞給password_hash的Hash :: make中有一個額外的選項。這就是爲什麼哈希沒有匹配 – cresjie
修復它!請輸入這個答案,以便我可以upvote並勾選它。 – Frosty619