2

Laravel4 では、ルートに次のコードを記述しましたが、常にログイン ページにリダイレクトされます。私はグーグルで調べて、スタックオーバーフローでもそれを見つけ、すべての解決策を試しましたが、成功しませんでした.それはばかげた間違いだと確信していますが、親切に追跡してください.ありがとう

ルート:

Route::post('login', function ()
    {
            $user = array(
        'username' => Input::get('username'),
        'password' => Hash::make(Input::get('password'))
    );
            /* Store entered username and password in an array named as 'user' */
            print_r($user);

            if (Auth::attempt($user)) 
            {
                return Redirect::route('home')->with('flash_notice', 'You are successfully logged in.');
                /* Authentication Success!!..Redirect user to home page */
            }
            else
            {
                return Redirect::route('login')
                    ->with('flash_error', 'Your username/password combination was incorrect.')->withInput();
                            /* Authentication failure!! lets go back to the login page */
            }
    });

ユーザー モデル:

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

    // public $timestamps = false;

    /**
     * The primary key of the table.
     *
     * @var string
     */
    protected $primaryKey = 'id';

    /**
     * The attributes excluded from the model's JSON form.
     *
     * @var array
     */
    protected $hidden = array('password');

    /**
     * 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;
    }



/**
 * Get the unique identifier for the user.
 *
 * @return mixed
 */
public function getAuthIdentifier()
{
    return $this->getKey();
}

/**
 * Get the password for the user.
 *
 * @return string
 */

}

ユーザーシーダー:

<?php
class UserSeeder extends Seeder {

    public function run()
    {
         DB::table('users')->delete();
        return array('table'=>'users',
        array(
                'username' => 'admin',
                'password' => 'admin'
         ),
        );
    }
}
4

2 に答える 2

0

パスワードをハッシュする必要があります。

array(
    'username' => 'admin',
    'password' => Hash::make('password')
),

詳しくは docsをご覧ください。

于 2013-08-24T13:42:37.613 に答える
0

Auth クラスにログインを試みるように要求するときは、ユーザー名を渡してそのまま渡します。しかし、メソッドを調べてみると、まずパスワードをハッシュして安全にし、次にデータベース エントリと照合します。現在の実装から、それを保存しているときは、ハッシュされていません。

上記のように、シーダーで次の変更を行う必要があります。

array(
    'username' => 'admin',
    'password' => Hash::make('password')
),

シーダーの使用方法が構文で正しいかどうかはよくわかりませんが、機能する場合は、そこでパスワードをハッシュしてください。

于 2013-08-24T19:08:27.110 に答える