无法让Latry中的Sentry过滤器正常工作

时间:2014-04-02 08:21:45

标签: php laravel cartalyst-sentry

我仍然习惯了Sentry,但如果我纠正了我做对了。

问题是,当我在路线上应用过滤器时,它并不像我希望的那样工作。它应该检查用户是否已登录,如果已登录,则将他/她重定向到登录页面。

我记录用户的方式:

public function postLogin()
{
    $credentials = array(
        'username' => $this->input->get('email_or_username'),
        'password' => $this->input->get('password')
    );
    try
    {
        $user = $this->sentry->authenticate($credentials, false);
        if ($user)
        {
            return $this->redirect->route('user.dashboard.index');
        }
    }
    catch(\Exception $e)
    {
        return $this->redirect->route('login')->withErrors(array('login' => $e->getMessage()));
    }
}

应该可以吗?接下来我得到了我的路线(我只将其分组以测试此特定路线资源上的过滤器):

Route::group(array('before'=>'Sentry'), function()
{
    Route::resource('user', 'UserProfileController',
        array('names' =>
            array(
                'index'=>'this.user.index',
                'create'=>'this.user.create',
                'store'=>'this.user.store',
                'show'=>'this.user.show',
                'edit'=>'this.user.edit',
                'update'=>'this.user.update',
                'destroy'=>'this.user.destroy'
            )
        )
    );
    // (index)show your profile info, (edit,update)Edit and update your profile 
});

最后应该检查用户的过滤器,如果他/她没有登录则重定向:

Route::filter('Sentry', function()
{
    if (!Sentry::check()){
        return Redirect::route('login');
    }
});

我已经被困在这几天了,我已经让很多其他人看了看,他们都说了同样的话:"嗯,那很奇怪。 ..&#34 ;.所以,我希望有人能在这方面给我一些意见。

0 个答案:

没有答案