2015-03-03 68 views
0

routes.php文件验证::尝试不检查用户名和密码

//form login 
Route::get('/', array('before' => 'guest', function() 
{ 
    return View::make('login'); 
})); 

// check login 
Route::post('login', '[email protected]'); 

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('/', '[email protected]'); 
    | 
    */ 

    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。我做了一个简单的登录表单,其中注册用户可以登录,看到仪表板,但当我使用验证::尝试检查用户是否有效它总是会显示一个错误'密码的用户名是错误的“

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'); 

用户名:imron02 密码:123456(通过使用哈希::让我插入了密码)

我知道这么多的用户已经问过这个问题,但我仍陷在每当我得到验证失败

回答

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, 
0

您需要从变量中删除引号。 $ email和$通过

$auth=Auth::attempt(array 
     (
     'username' => $email, 
     'password' => $pass, 
    )