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 密码:123456(使用hash :: make我已插入密码)
我知道有这么多用户问过这个问题,但我仍然陷入困境,每次我 auth失败
答案 0 :(得分:0)
您需要从变量中删除引号。 $ email和$ pass
$auth=Auth::attempt(array
(
'username' => $email,
'password' => $pass,
)
答案 1 :(得分:0)
更改此部分:
$credentials = array(
'username' => "'$email'",
'password' => "'$pass'"
);
$auth=Auth::attempt(array(
'username' => "'$email'",
'password' => "'$pass'",
));
对此:
$credentials = array(
'username' => $email,
'password' => $pass
);
$auth=Auth::attempt($credentials);
请参阅this。
但是在执行此操作时,请确保您的表中包含与用户名相对应的列。我不得不提到这一点,因为您提供的用户名似乎不是电子邮件ID。用户名和密码组合应存在于相应的表中以进行身份验证。
如果您打算将电子邮件ID作为用户名,则需要更改此行:
'username' => $email,
到此:
'email' => $email,