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 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 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>
Я использую laravel4 на моей машине xamppp. Я сделал простую регистрационную форму, в которой зарегистрированный пользователь может войти в систему, чтобы увидеть панель управления, но когда я использую Auth :: попытка проверить, что пользователь действителен или нет. Он всегда будет показывать мне ошибку "неверно имя пользователя пароля" '
INSERT INTO 'users' ('id', 'name', 'username', 'email', 'password', 'remember_token', 'created_at', 'updated_at') VALUES
(3, 'Imron Rosdiana', 'imron02', '[email protected]', '$2y$10$bAwhqg41gHPOLD36aVxQi.ItviwlN663gCIt6S8H2VjeR8kZWHAZy', 'pvusxXobB9wAWKReXte5pv51vD4BKfPi4LjEV9JUlArLdmc4DL30eipAJ6Nb', '2014-04-22 16:45:57', '2014-04-28 03:45:26');
USERNAME: imron02 PASSWORD: 123456 (используя hash :: make, я вставил пароль)
Я знаю, что многие пользователи задали этот вопрос, но все же я застреваю в то же самое время, и каждый раз, когда я получаю auth failed
Измените эту часть:
$credentials = array(
'username' => "'$email'",
'password' => "'$pass'"
);
$auth=Auth::attempt(array(
'username' => "'$email'",
'password' => "'$pass'",
));
К этому:
$credentials = array(
'username' => $email,
'password' => $pass
);
$auth=Auth::attempt($credentials);
См. Это.
Но при этом убедитесь, что у вас есть столбец, соответствующий имени пользователя в вашей таблице. Я должен был упомянуть об этом, потому что имя пользователя, которое вы указали, похоже, не является идентификатором электронной почты. Комбинация имени пользователя и пароля должна существовать в соответствующей таблице для аутентификации.
Если вы планируете использовать идентификатор электронной почты в качестве имени пользователя, вам необходимо изменить эту строку:
'username' => $email,
к этому:
'email' => $email,
Вам нужно удалить цитаты из переменной. $ email и $ pass
$auth=Auth::attempt(array
(
'username' => $email,
'password' => $pass,
)