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

Posted

技术标签:

【中文标题】使用 Laravel 的 Sentry 2 身份验证工作流程【英文标题】:Sentry 2 Authentication workflow with Laravel 【发布时间】:2014-04-25 08:02:24 【问题描述】:

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

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

登录后,为了检查用户是否真正登录,我进行了另一个控制器操作,转储了经过身份验证的用户详细信息:

public function index()

    var_dump(Auth::user());

var_dump() 返回空值。我在这里想念什么?我是 Laravel 和 Sentry 的新手。任何帮助,将不胜感激!提前致谢!

【问题讨论】:

【参考方案1】:

要访问哨兵会话用户使用这个 Sentry::getUser()

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

【讨论】:

是的,我想通了。谢谢! :)【参考方案2】:

如果你打算使用Sentry,你就不再使用 Laravels Auth。它们完全相互独立。

相反,您现在使用

$user = Sentry::getUser();

见https://cartalyst.com/manual/sentry/users/find

【讨论】:

哦,是的。不知道他们俩是独立的!谢谢。 :)

以上是关于使用 Laravel 的 Sentry 2 身份验证工作流程的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 4 多用户身份验证

Laravel + React,使用 Laravel 身份验证的 api

使用 Laravel 6.20.27 (PHP v7.4.19) 的 Sentry v2.10 的 SSL 错误

在 Laravel 4 中使用 Sentry 的记住我功能

Laravel 5.3 + Passport:总是未经身份验证的错误

在 Laravel 8 上安装 Sentry 时出错