Статья кратко для себя как сделать быстро авторизацию на Laravel
За основу брал http://otdel-devsite.ru/laravel-5-%D0%B0%D1%83%D1%82%D0%B5%D0%BD%D1%82%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F/ Но в этой статье есть ошибки(у меня исправлено под 5 ) и уже слеплено с другими статьями…Кидаю отрывки.
Этапы:
1. Заводим БД и прописываем в Laravel
2. Активируем таблицы с коробки
php artisan migrate
3. routes.php
Теперь создадим форму для ввода логина и пароля и соответствующий маршрут.
Маршруты, которые нам понадобятся.
Route::get('auth/login', 'Auth\AuthController@getLogin');
Route::post('auth/login', 'Auth\AuthController@postLogin');
Route::get('auth/logout', 'Auth\AuthController@getLogout');
Route::get('auth/register', 'Auth\AuthController@getRegister');
Route::post('auth/register', 'Auth\AuthController@postRegister');
4. Что мы видим? Мы видим что за регистрацию и аутентификацию отвечает готовый котролер AuthController у которого есть методы Login, Logout, Register, для каждого запроса GET и POST. Для примера создадим маршрут для админки нашего блога (условного блога конечно), которую защитим паролем
Route::group(['prefix'=>'adminzone','middleware'=>'auth'], function()
{
Route::get('/', function()
{
echo "Добро пожаловать админ!";
});
});
5. Добавим этот adminzone
Route::get('/adminzone', function() {
echo "Welcome to Secret Zone";
});
6. Теперь при переходе по адресу site.ru/adminzone, будет срабатывать посредник auth, который будет нас перенаправлять на страницу auth/login, если мы не прошли аутентификацию
7. Но как мы проверим, ведь у нас нет ни пользователя ни пароля? Создадим нашего пользователя admin. Можно конечно создать еще форму регистрации и зарегистрировать нашего админа, но проверить-то хочется сразу. Для этого будем использовать механизм заполнение данных seeding. Идем в папку
databases/seeds/
И редактируем файл DatabaseSeeder.php. Должно быть так
<?php
use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;
class DatabaseSeeder extends Seeder {
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
\DB::table('users')->insert([
'name'=>'admin',
'email'=>Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.'">'Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.',
'password'=>bcrypt('pass'),
]);
//Model::unguard();
// $this->call('UserTableSeeder');
}
}
Вся фигня что в оригинале указано DB:table и с ошибкой, исправлено на \DB::table
и финально выполняем: php artisan db:seed
8.
Теперь в нашей таблице должен поселится новый пользователь admin. Скорее идем проверять, что получилось. Идем сюда
site.ru/adminzone
Нас должно перенаправить на адрес
site.ru/auth/login
Вводим наши email и пароль. После этого нас переадресует на адрес
site.ru/home
Ага, аутентифкация работает. И после этого опять пытаемся перейти на
site.ru/adminzone
Должны увидеть надпись
Добро пожаловать админ!
Но что за редирект на site.ru/home после ввода email и пароля? Нам то хочется, что бы перенаправляло на адрес site.ru/adminzone! Ок, исправляем. Идем сюда
app/Http/Middleware
И ищем такой файл
RedirectIfAuthenticated.php
Находим функцию handle и адрес редиректа
return redirect->('/home');
Далее я думаю уже все знают, что нужно сделать? Меняем на url, который нам нравится
return redirect->('/adminozne');
Либо есть другой способ. В контролере
app/Http/Controllers/Auth/AuthController.php
добавляем в свойства класса AuthController вот такую запись
protected $redirectPath ='/adminzone';
Файлы проекты в аналогичной статье на soscode.ru
Нашел еще авторизацию с коробки с таким роутером https://github.com/kautharhilmyz/laravel-5.1-with-basic-auth
Route::get('/', function () {
return Redirect::to('home');
});
Route::get('home', 'HomeController@index');
// Authentication routes…
Route::get('auth/login', 'Auth\AuthController@getLogin');
Route::post('auth/login', 'Auth\AuthController@postLogin');
Route::get('auth/logout', 'Auth\AuthController@getLogout');
// Registration routes…
Route::get('auth/register', 'Auth\AuthController@getRegister');
Route::post('auth/register', 'Auth\AuthController@postRegister');
// Password reset link request routes…
Route::get('password/email', 'Auth\PasswordController@getEmail');
Route::post('password/email', 'Auth\PasswordController@postEmail');
// Password reset routes…
Route::get('password/reset/{token}', 'Auth\PasswordController@getReset');
Route::post('password/reset', 'Auth\PasswordController@postReset');
HomeController
<?php
namespace Bestmomo\Scafold\Http\Controllers;
use AppController;
class HomeController extends AppController
{
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('auth');
}
/**
* Show the application dashboard to the user.
*
* @return Response
*/
public function index()
{
return view('home');
}
}
// view('home');
@extends('app')
@section('content')
<div class="container">
<div class="row">
<div class="col-md-10 col-md-offset-1">
<div class="panel panel-default">
<div class="panel-heading">Home</div>
<div class="panel-body">
You are logged in!
</div>
</div>
</div>
</div>
</div>
@endsection