Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 28.02.2014 16:30:51

ksedim

[L4] Авторизация

Не могу сделать авторизацию, вот код

PHP
    public function createuser()
    {
        
$userNickname Input::get('username');
        
$password Input::get('password');
        
$userPassword $password;
        
$side Input::get('side');
        
$user = new User;
        
$user->user_nickname "$userNickname";
        
$user->password "$userPassword";
        
$user->side "$side";
        
$user->save();
        if (
Auth::attempt(array('user_nickname' => $user->user_nickname'password' => $user->password), true)) {
            return 
Redirect::route('gameIndex');
        }
    }

не перекидыват на именованый маршрут, а значит пользователь не авторизован, что в моем коде не так?

#2 01.03.2014 12:06:10

ksedim

Re: [L4] Авторизация

все еще жду ответа

#3 01.03.2014 14:40:26

Re: [L4] Авторизация

Проверь значения переменных и сам SQL, который посылается к БД (если посылается вообще). Включи профайлер.

Не в сети

#4 01.03.2014 14:42:04

Antonina

Re: [L4] Авторизация

Как у тебя роут прописан?
Нужно задать именованный маршрут, чтобы к нему обращаться, как ты хочешь
http://laravel.ru/docs/v4/routing#именованные

Это был ответ на вопрос, а теперь общие замечания:
зачем ты присваиваешь по три раза одно значение?
$password = Input::get('password');
$userPassword = $password;
$user->password = "$userPassword"; // зачем кавычки?

Про хеширование паролей не забывай

#5 01.03.2014 16:58:10

ksedim

Re: [L4] Авторизация

Antonina, несколько раз, потому раньше хешировал, потом просто хеш убрал, маршрут именован, это не ответ, я же сказал, проблема в авторизации

#6 01.03.2014 17:00:20

ksedim

Re: [L4] Авторизация

Proger_XP, запрос посылается, например вот так:
        $user = User::find($user->id);
        Auth::login($user);
            return Redirect::route('gameIndex');
все работает, авторизация проходит нормально

#7 01.03.2014 18:21:17

ksedim

Re: [L4] Авторизация

пишут убедиться, что поле пароля принимает минимум 0 символов, но все поля принимают минимум 0 символов

#8 01.03.2014 18:41:03

Re: [L4] Авторизация

  1. запрос посылается, например вот так:

Я имел в виду посмотреть профайлером, посылает ли/какой SQL генерирует Auth::attempt().

Не в сети

#9 01.03.2014 19:19:36

ksedim

Re: [L4] Авторизация

Как его запустить и посмотреть? что гуглить?

#10 01.03.2014 19:25:38

Re: [L4] Авторизация

Не в сети

#11 02.03.2014 20:13:04

ksedim

Re: [L4] Авторизация

Вчера установил профайлер, почитал и не понял как его использовать, можете в двух словах объяснить для чайника?

#12 02.03.2014 20:39:36

Re: [L4] Авторизация

Это просто инструмент для отслеживания запросов к БД, использования памяти, времени выполнения функций и т.п. Вообще говоря, чтобы только видеть запросы к БД можно даже без отдельного инструмента обойтись (хоть с ним и удобнее) — в Laravel есть событие illuminate.query — оно вызывается при каждом запросе, подпишись на него и выводи запросы в браузер или в файл.

Не в сети

#13 02.03.2014 20:51:38

ksedim

Re: [L4] Авторизация

Цель понял, пока не очень понимаю, как это сделать, завтра постараюсь

#14 02.03.2014 22:09:29

ksedim

Re: [L4] Авторизация

Мне кажется это странным немного, я просто рнализовал этот код на нулячем ларавеле, думал ошибка будет явной

#15 02.03.2014 22:22:05

Re: [L4] Авторизация

Запрос почти наверняка и покажет её явно. Так сложно сказать в чём у тебя может быть проблема — может банально пароли хранятся не в том виде, в каком нужно (хэш). Об этом писал(а) Antonina.

Не в сети

#16 02.03.2014 22:43:54

ksedim

Re: [L4] Авторизация

По коду видно, пароли добавляются без хэша, в ауз отдаются без хеша, 255 символов, варчар, утф8юникодси

#17 02.03.2014 23:31:00

Re: [L4] Авторизация

  1. По коду видно, пароли добавляются без хэша,

attempt() ожидает увидеть все пароли в хэшированном виде, если ты добавляешь их простым текстом — понятно, почему не работает.

Не в сети

#18 03.03.2014 06:42:16

ksedim

Re: [L4] Авторизация

Воот, наконец-то,  теперь вопрос, я должен их хешировать и при добавлении в бд и при проверке? Так я вроде тоже пробывал

#19 03.03.2014 12:37:39

ksedim

Re: [L4] Авторизация

тоже не канает
    $username = Input::get('username');
    $password = Input::get('password');
    $userPassword = Hash::make($password);
    if(Auth::attempt(array('email' => $username, 'password' => $userPassword), true)){
        return Redirect::route('gameIndex');
    }

это вход, а вот рега:

        $userNickname = Input::get('username');
        $password = Input::get('password');
        $userPassword = Hash::make($password);
        $side = Input::get('side');
        $user = new User;
        $user->username = $userNickname;
        $user->password = $userPassword;
        $user->side = $side;
        $user->save();

#20 03.03.2014 14:12:13

Re: [L4] Авторизация

Слушай, ну неужели сложно просто прочитать документацию и сделать так, как там написано?

Не в сети

#21 03.03.2014 15:15:52

ksedim

Re: [L4] Авторизация

так все по документацие, только имейл изменил на юзеррнэйм и то, даже с имейлом пробовал

#22 03.03.2014 15:34:40

Re: [L4] Авторизация

В документации не сказано, что нужно хэшировать пароль при входе. Ты в целом понимаешь, как это работает?

  1. При регистрации в БД сохраняется хэш пароля, чтобы при взломе сервера нельзя было определить настоящий пароль
  2. При входе введённый пароль хэшируется (внутри Auth::attempt()) и полученное значение сравнивается с тем, что в БД

Сейчас ты при входе хэшируешь пароль дважды — сам, а затем это же делает Auth::attempt(). Естественно, пароли не совпадают.

Не в сети

#23 03.03.2014 16:08:06

ksedim

Re: [L4] Авторизация

Воо, сейчас все вышло) спасибо большое) теперь у меня в голове все сложилось)

#24 03.03.2014 16:50:38

Re: [L4] Авторизация

Ну, наконец-то.

Не в сети

#25 23.03.2014 20:57:27

Дима

Re: [L4] Авторизация

А как изменить алгоритм шифрования пароля? У меня в старой базе они шифруются мд5,  как настроить на работу с ларавель старую бд не знаю

Подвал раздела