Моя аутентификация пользователя сломалась после того, как я обновил Laravel до 4.1 из 4.0.Laravel 4: Пользователь не остался Записан В
Я следовал руководству по обновлению, предоставленному документацией.
Теперь, когда я вхожу в систему, он, кажется, длится только по одному запросу.
К примеру, в моем методе индекса HomeController, я заставляю логин следующим образом:
Auth::login(User::find(1), true);
$user = Auth::user();
return View::make('layout', array('user' => $user));
Я присоединяюсь $ пользователя на макете и отображает информацию о пользователе отлично.
Однако, если я модифицирую контроллер, просто удалив первую строку, которая использует Auth для входа в систему, а затем обновит страницу, она пустая.
EDIT
Я использую Confide 3.1.0 для аутентификации пользователей и здесь есть функция do_login(). Я сделал штамп & дамп немедленно внутри первого «если», чтобы подтвердить, что Confide :: logAttempt возвращает true.
Я также полностью скрыл весь блок и просто сделал «echo Auth :: user()», и он действительно возвращает модель User для пользователя, с которым я только что вошел в систему.
public function do_login()
{
$input = array(
'email' => Input::get('email'), // May be the username too
'username' => Input::get('email'), // so we have to pass both
'password' => Input::get('password'),
'remember' => Input::get('remember'),
);
// If you wish to only allow login from confirmed users, call logAttempt
// with the second parameter as true.
// logAttempt will check if the 'email' perhaps is the username.
// Get the value from the config file instead of changing the controller
if (Confide::logAttempt($input, Config::get('confide::signup_confirm')))
{
// Redirect the user to the URL they were trying to access before
// caught by the authentication filter IE Redirect::guest('user/login').
// Otherwise fallback to '/'
// Fix pull #145
return Redirect::intended('/'); // change it to '/admin', '/dashboard' or something
}
else
{
$user = new User;
// Check if there was too many login attempts
if(Confide::isThrottled($input))
{
$err_msg = Lang::get('confide::confide.alerts.too_many_attempts');
}
elseif($user->checkUserExists($input) and ! $user->isConfirmed($input))
{
$err_msg = Lang::get('confide::confide.alerts.not_confirmed');
}
else
{
$err_msg = Lang::get('confide::confide.alerts.wrong_credentials');
}
return Redirect::action('[email protected]')
->withInput(Input::except('password'))
->with('error', $err_msg);
}
}
Вот функция
public function logAttempt($credentials, $confirmed_only = false, $identity_columns = array())
{
// If identity columns is not provided, use all columns of credentials
// except password and remember.
if(empty($identity_columns))
{
$identity_columns = array_diff(
array_keys($credentials),
array('password','remember')
);
}
// Check for throttle limit then log-in
if(! $this->reachedThrottleLimit($credentials))
{
$user = $this->repo->getUserByIdentity($credentials, $identity_columns);
if(
$user &&
($user->confirmed || ! $confirmed_only) &&
$this->app['hash']->check(
$credentials['password'],
$user->password
)
)
{
$remember = isset($credentials['remember']) ? $credentials['remember'] : false;
$this->app['auth']->login($user, $remember);
return true;
}
}
$this->throttleCount($credentials);
return false;
}
делить ваш код входа, где пользователь вошел в систему на первом месте – Anam
У меня была такая же проблема, и это оказалось проблемой с панелью отладки Barryvdh - если вы используете эту панель отладки, то обновите ее до последней версии dev-master и он должен исправить проблему – glendaviesnz
Спасибо glendaviesnz, но я не использую эту панель отладки. Был ли глобальный поиск моей кодовой базы просто абсолютно уверенным. – brianrhea