Php Laravel/Sentry登录属性未更改

Php Laravel/Sentry登录属性未更改,php,laravel,cartalyst-sentry,Php,Laravel,Cartalyst Sentry,我正在尝试实现用户可以使用电子邮件或用户名登录的功能。目前,我的电子邮件登录使用下面的代码,因为这是app/config/packages/cartalyst/sentry/config.php页面中的默认设置 我目前拥有的代码是: $email = Input::get('email'); $password = Input::get('password'); $remember = Input::get('remember_me'); $field = filter_var(Input::

我正在尝试实现用户可以使用电子邮件或用户名登录的功能。目前,我的电子邮件登录使用下面的代码,因为这是
app/config/packages/cartalyst/sentry/config.php
页面中的默认设置

我目前拥有的代码是:

$email = Input::get('email');
$password = Input::get('password');
$remember = Input::get('remember_me');

$field = filter_var(Input::get('email'), FILTER_VALIDATE_EMAIL) ? 'email' : 'username';       
Config::set('Cartalyst/Sentry::users.login_attribute', $field);

if(Sentry::authenticate(array($field => $email, 'password' => $password), $remember == 'yes'))
    $destination = Redirect::intended('/');
但是,它不断抛出Sentry提供的LoginRequiredException

但是,如果我将
config.php
页面中的
login\u属性更改为username,那么登录就可以正常工作,但是电子邮件端的工作就停止了


如果有人能解释为什么这会失败?我添加了一行来提取
login\u属性的当前值,该行按照预期工作和更改,但不管是否引发异常。

配置项用于在运行时设置登录属性,而不是在实际处理登录时。你可以看到这一点。更改配置项不会影响正在使用的实际登录属性名称,即


您应该能够将
Config::set()
命令替换为类似于
SentryUser::setLoginatTributenName($field)
(根据具体情况进行修改)的命令,并获得所需的结果。

配置项用于在运行时设置登录属性,而不是在实际处理登录时。你可以看到这一点。更改配置项不会影响正在使用的实际登录属性名称,即


您应该能够将
Config::set()
命令替换为类似于
SentryUser::SetLoginatTributenName($field)
(根据您的具体情况进行了修改)的命令,并获得所需的结果。

谢谢Cryode,您的答案非常完美,最后我不得不使用:
Cartalyst\Sentry\Users\eloont\User
但是没有你我做不到。谢谢你,你的答案很完美,最后我不得不使用:
Cartalyst\Sentry\Users\eloont\User
但是没有你我做不到。