gpt4 book ai didi

authentication - 如何向 Laravel 5.1 添加回身份验证?

转载 作者:行者123 更新时间:2023-12-04 06:38:42 26 4
gpt4 key购买 nike

Laravel 5 推出了一个不错的 Auth 脚手架,其中包括用于注册和验证用户的所有路由/ Controller / View 。但是我最近开始使用 Laravel 5.1,并注意到不再内置身份验证。我该如何将其添加回来?

最佳答案

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 目录。

同时将 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');

添加身份验证 View

首先让我们创建一个 Blade 模板以用于我们所有其他 View 。我们可以通过创建一个 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 .

使用 SMTP 设置更新 .env 文件(注册后提供)

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

config/mail.php 文件中的地址更新。

'from' => ['address' => 'noreply@test.com', 'name' => 'test'],

创建仪表板

添加仪表板路线

Route::get('dashboard', 'Dash\DashboardController@home');

将仪表板 Controller 添加到 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 中的 View :

   @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

更新登录重定向:

  • 更新 app/Http/Middleware/RedirectIfAuthenticated

与:

return redirect('/dashboard');

添加到 Auth/PasswordController.phpAuth/AuthController.php 文件。

protected $redirectTo = '/dashboard';

验证仪表板

要将对仪表板的访问限制为仅登录的用户,我们可以将以下内容添加到仪表板 Controller

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

关于authentication - 如何向 Laravel 5.1 添加回身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32482109/

26 4 0