使用Laravel的Sentry 2身份验证工作流程

时间:2014-03-19 08:08:01

标签: php laravel authentication laravel-4 cartalyst-sentry

我正在使用Sentry 2构建一个身份验证系统。我面临的问题是,在用户通过身份验证并通过身份验证登录后,我无法为其创建会话哨兵。这是我的控制器代码:

public function postLogin()
{
    $credentials = array(
        'email' => Input::get('email'),
        'password' => Input::get('password')
    );

    try 
    {
        $user = Sentry::authenticate($credentials, false);
        if ($user)
        {
            if(Input::get('remember')=='true')
                Sentry::loginAndRemember($user);     
        }
    }
    catch(\Exception $e)
    {
        return View::make('hello')->withErrors(array('login' => $e->getMessage()));
    }
    try
    {
        Sentry::login($user, false);
    }
    catch (Cartalyst\Sentry\Users\LoginRequiredException $e)
    {
        echo 'Login field is required.';
    }
    catch (Cartalyst\Sentry\Users\UserNotActivatedException $e)
    {
        echo 'User not activated.';
    }
    catch (Cartalyst\Sentry\Users\UserNotFoundException $e)
    {
        echo 'User not found.';
    }
}

登录后,为了检查用户是否实际登录,我做了另一个控制器操作,转储了Authenticated用户详细信息:

public function index()
{
    var_dump(Auth::user());
}

var_dump()返回null。我在这里错过了什么?我是Laravel和Sentry的新手。任何帮助,将不胜感激!提前谢谢!

2 个答案:

答案 0 :(得分:3)

如果您要使用Sentry,则不再使用Laravels Auth。它们完全相互独立。

相反,您现在使用

$user = Sentry::getUser();

请参阅https://cartalyst.com/manual/sentry/users/find

答案 1 :(得分:0)

要访问哨兵会话,请使用此功能  {{哨兵::的getUser()}}

Auth :: user()返回laravel会话对象。