Все ленты — последние статьи

Laravel Аутентификация (авторизация ) с коробки

Статья кратко для себя как сделать быстро авторизацию на 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