1

ログインフォームがあり、正しい資格情報でログインしています。ログインすると、「about」ページにリダイレクトされます (この機能をテストするために about ページを使用しました)。私は次のスニペットで上記を行いました

        $input = Input::all();
        $login = Auth::attempt([
            'username' => $input['username'],
            'password' => $input['password']
        ]);

        if($login){
            return Redirect::to('about');
        }
        else{
            dd('not logged in!');
        }

このスニペットは完全に機能していますが、追加した about ページへのルートで、->before('auth');ログインしていない場合はログイン ページにリダイレクトされ、すでにログインしている場合は続行します。

コードスニペット:

Route::get('about', function(){
    $title = 'About';
    return View::make('about')->with('title', $title);
})->before('auth');

しかし、を追加する->before('auth');と、正しい資格情報でログインした後でも、常にログ ページにリダイレクトされます。したがって、ログインすると、通常は概要ページにリダイレクトされると予想されますが、代わりにログインページに再度リダイレクトされます。

私は何を間違っていますか?

編集

さらにデバッグを行ったところ、次のことがわかりました。

my about ルートにリダイレクトし、これを実行します。

Route::get('about', function()
{
    dd( Auth::check() ); // This returns false
});

しかし、私のルートにリダイレクトする代わりに、私は試しました:

if($login){
    dd( Auth::check() ); // This returns true
}

リダイレクトした後、ログアウトしたように見えますか??

4

2 に答える 2

1

覚えているパラメーターを Auth::attempt に渡してみましたか?

$login = Auth::attempt([
    'username' => $input['username'],
    'password' => $input['password']
], true);

また、どのセッション ストレージ メカニズムを使用していますか?

于 2013-10-08T10:47:41.467 に答える
1

You should have an Auth filter and need to check whether logged in/out, like :

Route::filter('auth', function()
{
    if (Auth::guest()) return Redirect::to('login');
});

And this (filter) code should be added in app/filters.php and your route (what you have)

Route::get('about', function(){
    $title = 'About';
    return View::make('about')->with('title', $title);
})->before('auth');

Also, you can use it as given code below

Route::get('about', array('before' => 'auth' ,function()
{
    $title = 'About';
    return View::make('about')->with('title', $title);
}));

Update :

Also, if you are using database for session then make sure that primary key is id in the model (User Model) and if not then set it manually, like

protected $primaryKey = "IdOfTheCustomIDFieldInTheTable";
于 2013-10-06T21:05:30.817 に答える