Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Тоже верно, учту!
Много это понятно, но они создавались не просто так, и полюбому на чем то завязаны, и не хотелось бы, чтобы пользователю, вдруг вывалилось то, чего ему совсем знать не стоит)
сделал так в controllers/
<?php
use Illuminate\Exception;
class InvalidException extends \Exception {}
в global.php оставил как есть, и уже при вызове throw new InvalidException('тут косяк'); он все ловит.
Спасибо!
ну я делал по документации
Однако вы можете зарегистрировать несколько обработчиков, если вам это нужно. Они будут вызываться в зависимости от типа Exception, указанного в их первом аргументе. Например, вы можете создать обработчик только для ошибок RuntimeException:
App::error(function (RuntimeException $exception) { // Обработка исключения... });
Если обработчик возвращает ответ, он будет отправлен в браузер и никакие другие обработчики вызваны не будут
т.е как я понял он сам должен уловить новый тип. Или нет? И если нет, где и как создать?
ребят, что не так? Не работают исключения.
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 отображает белую страницу, хотя как бы должен исключение выбросить и вернуть на главную. что не так делаю?
Никто не собирается книгу From Apprentice To Artisan переводить?))
}%**slider23**, скорее всего, спрашивал, чем не подошёл стандартный **id**.
а) так это тест просто) прихоть, не более)
А зачем вообще понадобилось переопределять 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.
У меня Open Sever. Логи смотрю, ничего подозрительного(
}%В /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 тож не помогло.
у меня Yandex.
Set-Cookie:laravel_session={длинный набор букв}
Видно, куки принимает, но все равно сессию не запоминает(
И при переходе по страницам кука одна и таже, а вот сессия все время меняется
Все, ответ нашелся в том,что поле в таблице было слишком малым по длине. и хеш соответственно урезался.
Но вот беда, теперь Auth::check() не хочет со мной дружить. Проходит авторизацию, делаю редирект, там проверяю на Auth::check(), и меня выбрасывает снова на авторизацию... У ума меня свела эта авторизация)))
Заметил, что сессия меняется каждый раз, это не нормально же, получается что авторизовал по одной сессии, и сменил на другую, что соответственна не авторизована. Есть какие идеи?
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)
куда пароль то интересно делся) почему он его в запрос не вставляет... ничего не понимаю...
Альтернативные функции есть у этого класса?
да, значение имени столбцов в таблице я конечно же проверил в первую очередь.
с профайлером буду работать. Какой лучше не посоветуете?
Все топики которые вы предоставили полностью не раскрывают проблему, там так и не написано как исправить.
У меня по прежнему выдает 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. пароль в базе захеширован. в чем проблема понять не могу.... Кто решил проблему? Как вы используете авторизацию? поделитесь кодом или ткните меня в ошибку...
Доброго времени суток товарищи!
Сижу значит я и вот уже битый час не могу разобраться с авторизацией. Помогите пожалуйста кто чем может.
Вопрос 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, это на будущее)
Буду ждать ваших пожеланий и рекомендаций, спасибо Большое!