2015-09-09 5 views
3

Laravel 5 вышел с красивым Auth scaffolding, в который вошли все маршруты/контроллеры/виды для регистрации и аутентификации пользователей. Но недавно я начал использовать Laravel 5.1 и заметил, что аутентификация больше не встроена. Как я могу добавить ее обратно?Как вы можете добавить аутентификацию на Laravel 5.1?

ответ

7

У Laravel уже есть документация по building authentication into your Laravel 5.1 app. Тем не менее, я буду пройти через это в немного более подробно ...

Установка Laravel

Во-первых, убедитесь, что у вас есть свежей установки Laravel. Вот мой учебник по Installing Laravel 5.1 on OSX with MAMP.

Добавить Twitter Bootstrap

После downloading bootstrap добавить файл bootstrap.css в каталог public/css. (Вы, возможно, придется создать каталог CSS.

Также скопируйте fonts каталог Bootstrap в в public каталог приложения.

Добавить Authentication Маршруты

Добавить следующие маршруты в файл app/Http/routes.php.

// Authentication routes... 
Route::get('auth/login', 'Auth\[email protected]'); 
Route::post('auth/login', 'Auth\[email protected]'); 
Route::get('auth/logout', 'Auth\[email protected]'); 

// Registration routes... 
Route::get('auth/register', 'Auth\[email protected]'); 
Route::post('auth/register', 'Auth\[email protected]'); 

// Password reset link request routes... 
Route::get('password/email', 'Auth\[email protected]'); 
Route::post('password/email', 'Auth\[email protected]'); 

// Password reset routes... 
Route::get('password/reset/{token}', 'Auth\[email protected]'); 
Route::post('password/reset', 'Auth\[email protected]'); 

Add Authentication Views

Для начала создадим чтобы использовать для всех наших других представлений. Мы можем сделать это, создав файл resources/views/auth/app.blade.php. И скопируйте/вставьте код, указанный здесь: https://github.com/laravel/laravel/blob/5.0/resources/views/app.blade.php

Создайте новый каталог resources/views/auth. Внутри этого каталога создайте следующие файлы.

Чтобы отправить электронное сообщение «забыл пароль», создайте каталог resources/views/emails и поместите в него следующий файл.

Создать базу данных & Таблицы

Чтобы сделать это так, что мы действительно можем зарегистрировать нового пользователя и логин, мы должны создать правильные таблицы базы данных. К счастью, это уже доступно через миграции.

Сначала создайте новую таблицу базы данных и определите ее соединение в файле .env.

DB_HOST=localhost 
DB_DATABASE=name 
DB_USERNAME=root 
DB_PASSWORD=xxxxxxx 

Спусковой миграция с помощью следующей команды:

php artisan migrate 

Поскольку я использую MAMP, я получил эту ошибку при попытке переноса.

[PDOException]          

SQLSTATE [HY000] [2002] Нет такого файла или каталога

Решение было add the unix_socket key with a value of the path that the mysql.sock resides in MAMP.

'mysql' => [ 
     'driver' => 'mysql', 
     'host'  => env('DB_HOST', 'localhost'), 
     'database' => env('DB_DATABASE', 'forge'), 
     'username' => env('DB_USERNAME', 'forge'), 
     'password' => env('DB_PASSWORD', ''), 
     'charset' => 'utf8', 
     'collation' => 'utf8_unicode_ci', 
     'prefix' => '', 
     'strict' => false, 
     'unix_socket' => '/Applications/MAMP/tmp/mysql/mysql.sock', 
    ], 

Настройка сервера SMTP

Laravel 5.1 по умолчанию mailtrap.io. В первый раз я попробовал, и на самом деле это довольно просто! Первый шаг - setup mailtrap.io account.

Update .env файл с настройками SMTP (при условии, после регистрации)

MAIL_DRIVER=smtp 
MAIL_HOST=mailtrap.io 
MAIL_PORT=2525 
MAIL_USERNAME=xxxxxx 
MAIL_PASSWORD=xxxxxxx 
MAIL_ENCRYPTION=null 

Обновление от адреса в конфигурации/mail.php файла.

'from' => ['address' => '[email protected]', 'name' => 'test'], 

Создать Dashboard

Добавить приборную панель маршрутов

Route::get('dashboard', 'Dash\[email protected]'); 

Добавить контроллеры панели мониторинга app/Http/Controllers/Dash/DashboardController.php

<?php 

namespace App\Http\Dash\Controllers; 

use Illuminate\Http\Request; 
    use App\Http\Controllers\Controller; 

class DashboardController extends Controller 
{ 
    public function home(Request $request) 
    { 
     return view('dashboard/home'); 
    } 
} 

Обратите внимание на использование use App\Http\Controllers\Controller;. Это важно, поскольку мы использовали другое пространство имен для нашей информационной панели.

И вид на resources/views/dashboard/home.blade.php:

@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">Dashboard</div> 

       <div class="panel-body"> 
        You are logged in! 
       </div> 
      </div> 
     </div> 
    </div> 
</div> 
@endsection 

Update Войти перенаправляет:

  • Update app/Http/Middleware/RedirectIfAuthenticated

с:

return redirect('/dashboard'); 

Добавить в корзину Auth/PasswordController.php и Auth/AuthController.php.

protected $redirectTo = '/dashboard'; 

Аутентифицировать Dashboard

Чтобы ограничить доступ к панели управления, чтобы только те, которые вошли в систему, мы можем ддд следующие к контроллеру Dashboard

public function __construct() 
{ 
    $this->middleware('auth'); 
} 
0

Помимо документации как указано на Марти Томас, вы также можете попытаться использовать это package для автомостей.

+0

Я .. Я тоже попробовал этот пакет. Я просто контролер и люблю точно знать, что происходит, и держите контроллеры/представления все организованными в одном и том же месте. Но пакет работает очень хорошо. –

Смежные вопросы