Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Пишу ручками простую аутентификацию, используя присутствующие в Laravel инструменты.
Кто может помочь объяснить, что следует делать после того, как сверил существует ли данынй пользователь в бд и совпадает ли его пароль. Смотрел на эту статью но так и не понял, как правильно объявить юзера залогиненым и как сделать так, что бы до логаута он везде числился авторизованным. Просто ход мыслей подскажите хотя бы, а я уже как-то додумаю.
Не в сети
Зачем заного изобритать велосипед? Авторизация и регистрация доступны из коробки
Не в сети
Зачем заного изобритать велосипед? Авторизация и регистрация доступны из коробки
Я и пытаюсь пользоваться этой авторизацией, но всё равно непонятно как работать с переменными.
Не в сети
какие проблемы с прочтением и пониманием ?
Не в сети
Не в сети
какие проблемы с прочтением и пониманием ?
Я знаю что есть документация. И всю прочитал уже несколько раз и тщательно ознакомился. Допустим: нужно ли использовать сессии для авторизации, если пользоваться стандартными инструментами авторизации?
Не в сети
Какие дополнительные сессии?, уже всё реализовано
В методе где делаешь ручную аутентификацию используешь метод attempt
\Auth::attempt([
'email' => $request->get('email'),
'password' => $request->get('password')
]) - если авторизация через имейл, если вдруг по другому - то указываешь другое поле вместо email
И потом используешь фасад \Auth с нужными методами:
\Auth::user() - получить пользователя (модель)
\Auth::check() - проверка что аутентифицирован пользователь
\Auth::id() - получить id пользователя
и т.д.
Не в сети
Какие дополнительные сессии?, уже всё реализовано
В методе где делаешь ручную аутентификацию используешь метод attempt
\Auth::attempt([
'email' => $request->get('email'),
'password' => $request->get('password')
]) - если авторизация через имейл, если вдруг по другому - то указываешь другое поле вместо emailИ потом используешь фасад \Auth с нужными методами:
\Auth::user() - получить пользователя (модель)
\Auth::check() - проверка что аутентифицирован пользователь
\Auth::id() - получить id пользователя
и т.д.
спасибо. Примерно так и представлял.
Не в сети
возникла ошибка:
Call to undefined method Illuminate\Database\Query\Builder::attempt()
namespace App\Http\Controllers\Auth;
use App\User;
use Validator;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\ThrottlesLogins;
use Illuminate\Foundation\Auth\AuthenticatesAndRegistersUsers;
use Illuminate\Support\Facades\Input;
use App\Models\AuthModel;
use App\Models\Trainer;
Что я забыл подключить? Просто вроде как подключил всё как в примере.
Изменено laravelNewbie (23.05.2016 22:18:19)
Не в сети
Тут проблема не в подключении, ты вызываешь метод через фасад БД, а не \Auth.
Покажи код где идёт вызов attempt()
Не в сети
Тут проблема не в подключении, ты вызываешь метод через фасад БД, а не \Auth.
Покажи код где идёт вызов attempt()
Да, я тогда затупил и беледерду написал. Но теперь у меня новая проблема: при попытке аутентификации attempt возвращает false, хотя введённые данные совпадают с данными с БД.
protected function postLogin()
{
$email = Input::get('email');
$pass = Input::get('password');
if (Auth::attempt(['email' => $email, 'password' => $pass]))
{
return redirect()->intended('dashboard');
}
else
{
return redirect()->intended('login');
}
}
Не смотря на то, что вводимый юзер и пароль совпадает, меня всё равно перенаправляет на login, когда должно на dashboard. Где искать проблему?
Изменено laravelNewbie (24.05.2016 15:55:46)
Не в сети
Поскольку этот форум малёха баганный, и я немогу исправить свой предыдущий пост, то напишу здесь: возможно это связано с тем, что согласно документации "Если пользователь будет найден, хешированный пароль, сохранённый в базе данных, будет сравниваться с хешированным значением password", но у меня пароли пока не хешированы. Судя по всему оно хеширует вводимый пароль, а потом ищет его в бд, но там пока что не хешированые поли. Видимо отсюда и проблема. Вот правда с хешированием я ещё пока не разобрался.
Не в сети
PS: так всё и было. надо было хранить хешированые пароли что я и сделал. Что бы не плодить несколько тем, у меня остался один
ВОПРОС:
у меня помимо таблицы users, есть ещё одна таблица, которую так же следует проверять на совпадение почты и пароля. Как и где мне стоит добавить эту таблицу, что бы при роботе Auth::attempt и прочего, проверялись две таблицы, а не только юзерс.
Об этом сказано в файл auth.php, где написано
| If you have multiple user tables or models you may configure multiple
| sources which represent each model / table. These sources may then
| be assigned to any extra authentication guards you have defined.
Как правильно это записать(как я понимаю всё в том же аuth.php)?
Не в сети
| If you have multiple user tables or models you may configure multiple | sources which represent each model / table. These sources may then | be assigned to any extra authentication guards you have defined.
Возможно вам стоит сделать так
в auth.php где guards
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'some_guard' => [
'driver' => 'session',
'provider' => 'some_provider',
],
],
providers ->
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\User::class,
],
'some_provider' => [
'driver' => 'eloquent',
'model' => App\SomeModel::class,
],
]
ну и перед тем как проверять меняете
Auth::attemp()
на
$frst = auth()->guard('web'); $scnd= auth()->guard('some_guard');
вот так например делится разная авторизация. Вам стоит попробовать по экспериментировать
Изменено nemocoder (04.06.2016 14:52:45)
Не в сети
Страницы 1