Mar*_*mas 3 authentication login laravel-5.1
Laravel 5推出了一个很好的Auth脚手架,其中包括用于注册和验证用户的所有路由/控制器/视图.但我最近开始使用Laravel 5.1,并注意到身份验证不再内置.如何将其添加回去?
Laravel已经有关于在Laravel 5.1应用程序中构建身份验证的文档.但是,我会更详细地介绍一下......
首先,确保你有一个全新的Laravel安装.这是我在使用MAMP在OSX上安装Laravel 5.1的教程.
之后下载引导添加bootstrap.css文件到public/css目录中.(您可能必须创建css目录.
同时将bootstrap的fonts目录复制到应用程序的public目录中.
将以下路由添加到该app/Http/routes.php文件.
// 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');
Run Code Online (Sandbox Code Playgroud)
首先,让我们创建一个刀片模板,用于我们所有其他视图.我们可以通过创建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
Run Code Online (Sandbox Code Playgroud)
使用以下命令触发迁移:
php artisan migrate
Run Code Online (Sandbox Code Playgroud)
由于我正在使用MAMP,因此在尝试迁移时出现此错误.
[PDOException]
Run Code Online (Sandbox Code Playgroud)
SQLSTATE [HY000] [2002]没有这样的文件或目录
解决方案是使用mysql.sock驻留在MAMP中的路径值添加unix_socket密钥.
'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',
],
Run Code Online (Sandbox Code Playgroud)
Laravel 5.1默认使用mailtrap.io.我第一次试一试,实际上很容易!第一步是设置mailtrap.io帐户.
使用SMTP设置更新.env文件(注册后提供)
MAIL_DRIVER=smtp
MAIL_HOST=mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=xxxxxx
MAIL_PASSWORD=xxxxxxx
MAIL_ENCRYPTION=null
Run Code Online (Sandbox Code Playgroud)
从config/mail.php文件中的地址更新.
'from' => ['address' => 'noreply@test.com', 'name' => 'test'],
Run Code Online (Sandbox Code Playgroud)
添加仪表板路由
Route::get('dashboard', 'Dash\DashboardController@home');
Run Code Online (Sandbox Code Playgroud)
添加仪表板控制器 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');
}
}
Run Code Online (Sandbox Code Playgroud)
注意使用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
Run Code Online (Sandbox Code Playgroud)
更新登录重定向:
app/Http/Middleware/RedirectIfAuthenticated有:
return redirect('/dashboard');
Run Code Online (Sandbox Code Playgroud)
加入Auth/PasswordController.php和Auth/AuthController.php文件.
protected $redirectTo = '/dashboard';
Run Code Online (Sandbox Code Playgroud)
要将仪表板的访问权限仅限于那些已登录的仪表板,我们可以将以下内容添加到仪表板控制器中
public function __construct()
{
$this->middleware('auth');
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3056 次 |
| 最近记录: |