Laravel по-русски

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

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

#2 Re: Laravel 4 » не работают исключения » 13.08.2014 13:07:37

Много это понятно, но они создавались не просто так, и полюбому на чем то завязаны, и не хотелось бы, чтобы пользователю, вдруг вывалилось то, чего ему совсем знать не стоит)

сделал так в controllers/

<?php

use Illuminate\Exception;

class InvalidException extends \Exception {}

в global.php оставил как есть, и уже при вызове throw new InvalidException('тут косяк'); он все ловит.

Спасибо!

#3 Re: Laravel 4 » не работают исключения » 12.08.2014 20:55:52

ну я делал по документации

Однако вы можете зарегистрировать несколько обработчиков, если вам это нужно. Они будут вызываться в зависимости от типа Exception, указанного в их первом аргументе. Например, вы можете создать обработчик только для ошибок RuntimeException:

App::error(function (RuntimeException $exception) {
  // Обработка исключения...
});

Если обработчик возвращает ответ, он будет отправлен в браузер и никакие другие обработчики вызваны не будут

т.е как я понял он сам должен уловить новый тип. Или нет? И если нет, где и как создать?

#4 Laravel 4 » не работают исключения » 10.08.2014 00:28:59

MrRino
Ответов: 6

ребят, что не так? Не работают исключения.

public function postEnter ()
   {
       $rules = ['username' => 'required|exists:users', 'password' => 'required',];
       $input = Input::only("username", "password");
       Validator::make($input, $rules);
       if (Validator::fails()) {
           throw new InvalidException('Некорректно введены данные');
       }
       $success = Auth::attempt(['user_name' => $input['username'], 'password' => $input['password']], true, true);
       if (!$success) {
           throw new InvalidException('Неверно введены данные логин/пароль');
       }

                                    return Redirect::intended();
   }

в global.php

App::error(function (InvalidException $exception) {
    Log::error($exception);
    Session::flash($exception);
       return Redirect::to('/');
});

при переходе по postEnter отображает белую страницу, хотя как бы должен исключение выбросить и вернуть на главную. что не так делаю?

#5 Re: Прочее » «Code Bright» по-русски: официальный перевод » 08.08.2014 23:20:15

Никто не собирается книгу From Apprentice To Artisan переводить?))

#6 Re: Laravel 4 » Вопросы по авторизации и все что с ней связано. » 26.07.2014 22:32:22

Proger_XP пишет:

}%**slider23**, скорее всего, спрашивал, чем не подошёл стандартный **id**.

а) так это тест просто) прихоть, не более)

#7 Re: Laravel 4 » Вопросы по авторизации и все что с ней связано. » 26.07.2014 08:59:24

slider23 пишет:

А зачем вообще понадобилось переопределять primary key , да и еще так странно ?

из документации

Note: Eloquent will also assume that each table has a primary key column named id. You may define a primaryKey property to override this convention.

#8 Re: Laravel 4 » Вопросы по авторизации и все что с ней связано. » 25.07.2014 20:00:19

Все, ответ найден.
Кто же знал, что в Модели User нужно еще и ключи указывать.
protected $primaryKey = 'id_users';

и тут сразу все заработало.... Спасибо @РЕКТОР

#10 Re: Laravel 4 » Вопросы по авторизации и все что с ней связано. » 25.07.2014 11:56:23

Cheshirrski пишет:

}%В /app/config/session.php какой драйвер указан для сессий? %%(Auth::attempt($credentials,true)) %% - второй параметр подразумевает что у вас в куках есть remember_token, он присутствует?

Драйвер стоит file. пробовал и database, не помогло. В базе так же наблюдал изменение сессии с каждым запросом.

в куках есть
Name:remember_{набор букв}
Value: {много букв}

что соответственно присутствует. и эта value одна и та же, т.е ее он не меняет

Если на странице атворизации вывести var_dump(Auth::user()->user_name) - OK, пользователь авторизован и найден
при редиректе авторизация отвалилась...


Еще.

в папке app/config/testing присутствуют файлы cache.php и sessions.php где значение драйвера array это для чего и нужны ли они? пробовал в них ставить file тож не помогло.

#11 Re: Laravel 4 » Вопросы по авторизации и все что с ней связано. » 25.07.2014 09:24:13

у меня Yandex.
Set-Cookie:laravel_session={длинный набор букв}
Видно, куки принимает, но все равно сессию не запоминает(

И при переходе по страницам кука одна и таже, а вот сессия все время меняется

#12 Re: Laravel 4 » Вопросы по авторизации и все что с ней связано. » 25.07.2014 00:02:28

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

Но вот беда, теперь Auth::check() не хочет со мной дружить. Проходит авторизацию, делаю редирект, там проверяю на Auth::check(), и меня выбрасывает снова на авторизацию... У ума меня свела эта авторизация)))
Заметил, что сессия меняется каждый раз, это не нормально же, получается что авторизовал по одной сессии, и сменил на другую, что соответственна не авторизована. Есть какие идеи?

#13 Re: Laravel 4 » Вопросы по авторизации и все что с ней связано. » 24.07.2014 21:02:28

Proger_XP спасибо, использовал твой код.
Не понимаю почему так. Код который я использую

$pass =  Input::get('password');
$user = Input::get('username');
     $credentials = ['password' => $pass,'user_name' => $user];

     if (Auth::attempt($credentials,true)) //todo Не работает авторизация
     {
         return Redirect::to('index');
     }
     else {
     Session::flash('error_signup','Неверно введены данные логин/пароль');

         var_dump(Auth::attempt($credentials));
         //return Redirect::to('/');
     }

а запрос идет без пароля:
select * from `users` where `user_name` = MrRino limit 1
bool(false)

куда пароль то интересно делся) почему он его в запрос не вставляет... ничего не понимаю...
Альтернативные функции есть у этого класса?

#14 Re: Laravel 4 » Вопросы по авторизации и все что с ней связано. » 24.07.2014 14:41:41

да, значение имени столбцов в таблице я конечно же проверил в первую очередь.
с профайлером буду работать. Какой лучше не посоветуете?

#15 Re: Laravel 4 » Вопросы по авторизации и все что с ней связано. » 24.07.2014 12:58:51

Все топики которые вы предоставили полностью не раскрывают проблему, там так и не написано как исправить.
У меня по прежнему выдает bool(false) при попытке использовать Auth::attempt()
Правда из выше указанных топиков узнал, что пароль проверять на хеш не надо, Auth::attempt() это делает автоматически. Вот за это спасибо!
И все же, вопрос остается открытым.

$pass =  Input::get('password');
     $user = Input::get('username');
     $credentials = ['password' => $pass,'user_name' => $user];

     if (Auth::attempt($credentials,true)) //todo Не работает авторизация
     {
         return Redirect::to('index');
     }
     else {
     Session::flash('error_signup','Неверно введены данные логин/пароль');

         var_dump(Auth::attempt($credentials));
         //return Redirect::to('/');
     }

var_dump выдает на false. пароль в базе захеширован. в чем проблема понять не могу.... Кто решил проблему? Как вы используете авторизацию? поделитесь кодом или ткните меня в ошибку...

#16 Laravel 4 » Вопросы по авторизации и все что с ней связано. » 23.07.2014 13:35:52

MrRino
Ответов: 19

Доброго времени суток товарищи!

Сижу значит я и вот уже битый час не могу разобраться с авторизацией. Помогите пожалуйста кто чем может.

Вопрос 1.

Реализую авторизацию, у меня она следующего вида:

$credentials = array('user_name' => Input::get('username'), 'password' => Input::get('password'));
     if (Auth::attempt($credentials))
     {
         return Redirect::to('/home');
     }
     return Redirect::to('/');

Понятно что attempt возвращает либо true либо false. Но вот в чем беда, при таком подходе он всегда возвращает false. И базу проверил, и данные что идут по post запросу, с виду все верно, но что-то не нравится ему( В чем может быть проблема?

Вопрос 2.

Я никак не соображу, искал информацию в интернете, либо плохо искал, что мне тоже не помогло.
Вот авторизация если прошла, то как вернуть данные из базы именно того пользователя что авторизовался?
Использовать User::find(int id) ? Но как узнать id??? или есть какие другие способы?
User::all() понятно достает все данные из таблицы, а мне нужно конкретного распознать, чтобы выполнять манипуляцию с ним. И не пойму как это сделать.

Вопрос 3.
Понятно что пароль без соли, что баба без лифчика.
Использовал поначалу авторизации что приведена выше Hash::make(Input::get('password'))
В базу показал что все закодировалось.
А как проверить потом при входе? с Hash::check() ? просто не могу проверить пока так ткак проблема выше в вопросе 1, это на будущее)

Буду ждать ваших пожеланий и рекомендаций, спасибо Большое!

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