Auth :: попытки не проверяет имя пользователя и пароль

0

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

Теги:
laravel-4

2 ответа

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

См. Это.

Но при этом убедитесь, что у вас есть столбец, соответствующий имени пользователя в вашей таблице. Я должен был упомянуть об этом, потому что имя пользователя, которое вы указали, похоже, не является идентификатором электронной почты. Комбинация имени пользователя и пароля должна существовать в соответствующей таблице для аутентификации.

Если вы планируете использовать идентификатор электронной почты в качестве имени пользователя, вам необходимо изменить эту строку:

'username' => $email,

к этому:

'email' => $email,
0

Вам нужно удалить цитаты из переменной. $ email и $ pass

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню