1

Laravel で認証およびログイン アプリケーションを作成しようとしていますが、常に失敗します。「ユーザー名またはパスワードが正しくありません」というメッセージが常に表示されます。login.blade.php で

私のファイルはこれらのようなものです。

route.php

    Route::get('login' , function() {    
       return View::make('auth.login');
    });

    Route::post('logincontrol', function() {

        $userdata = array(
            'username'      => Input::get('username'),
            'password'      => Input::get('password') 
        );

        if ( Auth::attempt($userdata) )
        {
            return Redirect::to('auth.dashboard');
        }
        else
        {
            return Redirect::to('login')
                ->with('login_errors', true);
        }

    });



    Route::get('dashboard', function(){  

        echo 'welcome';
    });

       Route::get('insert', function() {

           DB::table('users')->insert(array(
          'username'  => 'admin',
          'password'  => Hash::make('admin')
          ));

   });

login.blade.php

{{ Form::open( array('url' => 'logincontrol') ) }}

    <!-- check for login errors flash var -->
    @if (Session::has('login_errors'))
        <span class="error">Username or password incorrect.</span>
    @endif

    <!-- username field -->
    <p>{{ Form::label('username', 'Username') }}</p>
    <p>{{ Form::text('username') }}</p>

    <!-- password field -->
    <p>{{ Form::label('password', 'Password') }}</p>
    <p>{{ Form::password('password') }}</p>

    <!-- submit button -->
    <p>{{ Form::submit('Login') }}</p>

{{ Form::close() }}

まず、挿入 URL を実行し、管理者をデータベースに追加しました。

次に、/login を実行すると、URL フォームが表示されます。挿入ルートのようにユーザー名とパスワードを入力しますが、常に false になります。

http://codehappy.daylerees.com/authenticationからコードを取得しました。すべてのページを読みましたが、できませんでした。

編集:試してみました。

'password'      => Hash::make( Input::get('password') ) 

しかし、うまくいきませんでした:(

編集: 私の auth.php ファイルはこのようなものです。

return array(

    'driver' => 'eloquent',
    'username'=>'username', 
    'model' => 'User', 
    'table' => 'users',
    'reminder' => array(

        'email' => 'emails.auth.reminder',

        'table' => 'password_reminders',

        'expire' => 60,

    ),

);
4

3 に答える 3

0

の設定はauthenticationapplication/config/auth.phpこのファイルにあり、このusernameような設定があります

/*
|--------------------------------------------------------------------------
| Authentication Username
|--------------------------------------------------------------------------
|
| Here you may specify the database column that should be considered the
| "username" for your users. Typically, this will either be "username"
| or "email". Of course, you're free to change the value to anything.
|
*/

デフォルトでは

'username' => 'email',

あなたの場合、それusernameはあなたが持っているからです

DB::table('users')->insert(array(
    'username'  => 'admin', // looks like you are using username for login
    'password'  => Hash::make('admin')
));

ログイン用の次のコード

$userdata = array(
    'username'      => Input::get('username'), // you are using username field
    'password'      => Input::get('password') 
);

// Login
if ( Auth::attempt($userdata) )
{
    //...
}

したがって、application/config/auth.phpファイルで変更していない場合は、次のように変更する必要があります

'username' => 'username',

または、テーブル内のフィールドを使用して、の代わりにフィールドをemail使用して認証することもできます。ところで、これは質問のリンクに関連しています。emailusernameLaravel-3

于 2013-09-23T18:50:11.603 に答える
0

時にはそれはあなたを得る単純なものです。私は今日の大部分を同様の問題に費やしていますが、私の場合の解決策は、ユーザーモデルを作成した職人の generate:scaffold を使用することでした。

class User extends Eloquent

追加してこのモデルを変更しました

implements UserInterface, RemindableInterface

次に、次の不足している機能を追加しました。

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

今はすべてがうまく機能しています。これがお役に立てば幸いです。

オッシ

于 2013-10-12T22:34:08.887 に答える