Я создал приложение, используя laravel. Вчера я выложил приложение в живую, но у меня много проблем с аутентификацией. Никто не может войти в систему, кроме случаев, когда они сбрасывают свой пароль, и тогда это работает один раз.
Я проверил это с помощью следующего контроллера.
<?php
class AdminController extends \BaseController {
public function getResetPw($id, $pw) {
//Log updaten en naar de database sturen
$log = new UserLog;
$log->status = 'Changepw:' . $id;
$log->save();
// Start password changing.
$user = User::find($id);
if ($user == null)
return "No valid user";
$user->password = Hash::make($pw);
$user->save();
return "Password set for " . $user->username . ". ('" . $pw . "', '" . $user->password . "')<br /><br />Check: " . Auth::attempt(array('username' => $user->username, 'password' => $pw));
}
public function getTestPw($id, $pw) {
// Start password changing.
$user = User::find($id);
if ($user == null)
return "No valid user";
return Auth::attempt(array('username' => $user->username, 'password' => $pw)) . "";
}
}
Сначала я позвонил getResetPw
функция, чтобы установить мой новый пароль, затем я вызываю getTestPw
чтобы проверить это. Я обновляю страницу каждую секунду, и она возвращается 1
примерно 5 раз, а затем аутентификация становится недействительной. То есть я больше не могу войти.
Это маршруты для вышеуказанных функций:
Route::get('/admin/pwreset/{id}/{pw}', 'AdminController@getResetPw')->where('id', '\d+');
Route::get('/admin/pwtest/{id}/{pw}', 'AdminController@getTestPw')->where('id', '\d+');
Может ли это быть из-за недопустимых символов в моем ключе шифрования? Это мой ключ шифрования (с заменой некоторых букв): ROOzr*Dqmoense_se_emvnqmd!*tft7e
Спасибо за помощь.
Обновить:
Это код для входа в систему:
public function postLogin()
{
$message = ""; // Het errorbericht dat moet worden weergegeven.
//We prepareren een log voor in de database
$log = new UserLog;
// Zijn alle gegevens ingevuld?
if (Input::has('txtUsername') && Input::has('txtPassword'))
{
$log->username = Input::get('txtUsername');
// Controlleer de ingevulde gegevens.
//$auth = User::where("username", "=", Input::get('txtUsername'))->first();
if (Auth::attempt(array('username' => Input::get('txtUsername'), 'password' => Input::get('txtPassword'))))
//if (Hash::check(Input::get("txtPassword"), $auth->password))
{
//Auth::login($auth);
//Log updaten en naar de database sturen
$log->user_id = Auth::user()->id;
$log->status = 'LoginSuccess';
$log->save();
return Redirect::intended('/user');
}
else
{
$log->status = 'LoginFailed';
$log->save();
$message = "Geen geldige gegevens.";
// If the username is known, let the webmasters know.
if (User::where('username', '=', Input::get('txtUsername'))->count() > 0)
{
$data = array(
"username" => Input::get('txtUsername'),
"ip" => $_SERVER['REMOTE_ADDR'],
"user_agent" => $_SERVER['HTTP_USER_AGENT']
);
Role::find(1)->sendMail(
'KLJ Loginpoging (' . Input::get('txtUsername') . ')',
'emails.auth.loginAttempt',
$data
);
}
}
}
else
{
$message = "Vul alle velden in aub.";
}
return View::make('login.login')->with('message', $message);
}
Задача ещё не решена.
Других решений пока нет …