[英]Auth::attempt is not checking for the username and password
routes.php
//form login
Route::get('/', array('before' => 'guest', function()
{
return View::make('login');
}));
// check login
Route::post('login', 'HomeController@validate');
HomeController.php
class HomeController extends BaseController {
/*
|--------------------------------------------------------------------------
| Default Home Controller
|--------------------------------------------------------------------------
|
| You may wish to use controllers instead of, or in addition to, Closure
| based routes. That's great! Here is an example controller method to
| get you started. To route to this controller, just add the route:
|
| Route::get('/', 'HomeController@showWelcome');
|
*/
public function validate()
{
// set the remember me cookie if the user check the box
$remember = (Input::has('remember')) ? true : false;
// attempt to do the login
$email = Input::get('username');
$pass = Input::get('password');
$password = Hash::check($remember,$pass);
$credentials = array(
'username' => "'$email'",
'password' => "'$pass'"
);
$auth=Auth::attempt(array(
'username' => "'$email'",
'password' => "'$pass'",
));
if($auth) {
return 'success';
}
else {
return 'auth failed';
}
}
}
User.php
<?php
use Illuminate\Auth\UserInterface;
use Illuminate\Auth\Reminders\RemindableInterface;
class User extends Eloquent implements UserInterface, RemindableInterface {
/**
* The database table used by the model.
*
* @var string
*/
protected $table = 'users';
/**
* The attributes excluded from the model's JSON form.
*
* @var array
*/
protected $hidden = array('password');
/**
* Get the unique identifier for the user.
*
* @return mixed
*/
public function getAuthIdentifier()
{
return $this->getKey();
}
/**
* Get the password for the user.
*
* @return string
*/
public function getAuthPassword()
{
return $this->password;
}
/**
* Get the e-mail address where password reminders are sent.
*
* @return string
*/
public function getReminderEmail()
{
return $this->email;
}
public function getRememberToken()
{
return $this->remember_token;
}
public function setRememberToken($value)
{
$this->remember_token = $value;
}
public function getRememberTokenName()
{
return 'remember_token';
}
}
login.php
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
<title>Simple Login</title>
</head>
<body>
<?php echo Form::open(array('url' => 'login', 'role' => 'form')) ?>
<h2>Please sign in</h2>
<!-- if there are login errors, show them here -->
<p>
<?php if(Session::has('flash_notice')): ?>
<div id="flash_notice"><?php echo Session::get('flash_notice') ?></div>
<?php endif; ?>
</p>
<input type="text" name="username" value="<?php echo Input::old('username') ?>" required="required" autofocus="autofocus" autocomplete="off" placeholder="Username" />
<input name="password" placeholder="Password" required="required" type="password" />
<div>
<input name="remember" type="checkbox" /> Remember me
</div>
<input type="submit" value="Sign in" />
<?php echo Form::close() ?>
</body>
</html>
我在xamppp机器上使用laravel4。 我已经制作了一个简单的登录表单,注册用户可以在其中登录,以查看仪表板,但是当我使用Auth :: attempt来检查用户是否有效时,它将始终显示一个错误“密码的用户名错误” '
INSERT INTO `users` (`id`, `name`, `username`, `email`, `password`, `remember_token`, `created_at`, `updated_at`) VALUES
(3, 'Imron Rosdiana', 'imron02', 'imron@rosdiana.com', '$2y$10$bAwhqg41gHPOLD36aVxQi.ItviwlN663gCIt6S8H2VjeR8kZWHAZy', 'pvusxXobB9wAWKReXte5pv51vD4BKfPi4LjEV9JUlArLdmc4DL30eipAJ6Nb', '2014-04-22 16:45:57', '2014-04-28 03:45:26');
USERNAME:imron02 PASSWORD:123456(通过使用hash :: make我已插入密码)
我知道有很多用户问过这个问题,但是每次我获得身份验证失败时,我仍然陷入同样的困境
您需要从变量中删除引号。 $ email和$ pass
$auth=Auth::attempt(array
(
'username' => $email,
'password' => $pass,
)
更改此部分:
$credentials = array(
'username' => "'$email'",
'password' => "'$pass'"
);
$auth=Auth::attempt(array(
'username' => "'$email'",
'password' => "'$pass'",
));
对此:
$credentials = array(
'username' => $email,
'password' => $pass
);
$auth=Auth::attempt($credentials);
参考这个 。
但是,在执行此操作时,请确保您在表中具有与用户名相对应的列。 我不得不提到这一点,因为您提供的用户名似乎不是电子邮件ID。 用户名和密码组合应该存在于相应的表中以便进行身份验证。
如果您打算将电子邮件ID作为用户名,则需要更改此行:
'username' => $email,
对此:
'email' => $email,
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.