Jadual Kandungan
1、生成认证脚手架
2、实现前台用户登录
3、编辑认证配置文件
4、创建后台用户模型
5、定义后台用户认证路由及控制器
6、视图文件创建及修改
7、实现后台用户认证
Rumah pembangunan bahagian belakang tutorial php Laravel 5.2 新特性系列 -- 多用户认证功能实现详解

Laravel 5.2 新特性系列 -- 多用户认证功能实现详解

Jun 20, 2016 pm 12:36 PM

Laravel 5.2新增多用户认证支持,即同时允许不同数据表用户(如前台用户、后台用户)登录认证。下面我们就来简单介绍多用户登录及注册功能实现。

1、生成认证脚手架

首先我们使用Laravel 5.2提供的认证脚手架完成初始化工作:

php artisan make:auth
Salin selepas log masuk

该Artisan命令会生成用户认证所需的路由、视图以及HomeController:

去查看路由文件routes.php,会发现该文件已经被更新:

Route::group(['middleware' => 'web'], function () {    Route::auth();    Route::get('/home', 'HomeController@index');});
Salin selepas log masuk

其中 Route::auth() 定义了注册登录路由, /home 为认证通过后跳转路由。

2、实现前台用户登录

接下来我们先实现前台用户登录,也就是Laravel自带的User用户登录。通过上面的脚手架,我们已经生成了认证所需的所有代码,剩下要做的就是使用迁移命令创建用户认证相关表:

php artisan migrate
Salin selepas log masuk
Salin selepas log masuk

该命令执行后生成 users 表和 password_resets 表,分别为用户主表和密码重置表。

然后我们就可以在浏览器中输入 http://laravel.app/register 来注册新用户:

我们创建一个用户名为 test 的用户,注册成功后,进入 http://laravel.app/home ,会发现已经登录:

3、编辑认证配置文件

要实现多用户认证,首先要配置认证配置文件 auth.php ,这里我们实现的功能是前后台用户登录,所以对应配置如下:

<?phpreturn [    'defaults' => [        'guard' => 'web',        'passwords' => 'users',    ],    'guards' => [        'web' => [            'driver' => 'session',            'provider' => 'users',        ],        'admin' => [            'driver' => 'session',            'provider' => 'admins',        ],        'api' => [            'driver' => 'token',            'provider' => 'users',        ],    ],    'providers' => [        'users' => [            'driver' => 'eloquent',            'model' => App\User::class,        ],        'admins' => [            'driver' => 'eloquent',            'model' => App\Admin::class,        ],    ],    'passwords' => [        'users' => [            'provider' => 'users',            'email' => 'auth.emails.password',            'table' => 'password_resets',           'expire' => 60,        ],    ],];
Salin selepas log masuk

认证是由 guard 和 provider 两部分构成的(参考用户认证文档),所以我们在这两个配置项中分别新增了 admin 和 admins 选项。

4、创建后台用户模型

接下来我们来实现后台用户登录,首先使用如下Artisan命令生成后台用户模型:

php artisan make:model Admin --migration
Salin selepas log masuk

带上 --migration 选项会生成对应用户表 admins ,我们定义该数据表字段和 users 一样:

Schema::create('admins', function (Blueprint $table) {    $table->increments('id');    $table->string('name');    $table->string('email')->unique();    $table->string('password', 60);    $table->rememberToken();    $table->timestamps();});
Salin selepas log masuk

然后通过运行迁移命令生成该表:

php artisan migrate
Salin selepas log masuk
Salin selepas log masuk

然后更新 Admin 模型类如下:

<?phpnamespace App;use Illuminate\Foundation\Auth\User as Authenticatable;class Admin extends Authenticatable{    /**     * The attributes that are mass assignable.     *     * @var array     */    protected $fillable = [        'name', 'email', 'password',    ];    /**     * The attributes excluded from the model's JSON form.     *     * @var array     */    protected $hidden = [        'password', 'remember_token',    ];}
Salin selepas log masuk

5、定义后台用户认证路由及控制器

接下来我们来定义后台用户认证路由,修改 routes.php 代码如下:

Route::group(['middleware' => ['web']], function () {    Route::auth();    Route::get('home', 'HomeController@index');    Route::get('admin/login', 'Admin\AuthController@getLogin');    Route::post('admin/login', 'Admin\AuthController@postLogin');    Route::get('admin/register', 'Admin\AuthController@getRegister');    Route::post('admin/register', 'Admin\AuthController@postRegister');    Route::get('admin', 'AdminController@index');});
Salin selepas log masuk

然后使用Artisan命令创建对应控制器:

php artisan make:controller Admin/AuthControllerphp artisan make:controller AdminController
Salin selepas log masuk

编辑 Admin/AuthController.php 代码如下:

<?phpnamespace App\Http\Controllers\Admin;use App\Admin;use Validator;use App\Http\Controllers\Controller;use Illuminate\Foundation\Auth\ThrottlesLogins;use Illuminate\Foundation\Auth\AuthenticatesAndRegistersUsers;class AuthController extends Controller{    use AuthenticatesAndRegistersUsers, ThrottlesLogins;    protected $redirectTo = '/admin';    protected $guard = 'admin';    protected $loginView = 'admin.login';    protected $registerView = 'admin.register';    public function __construct()    {        $this->middleware('guest:admin', ['except' => 'logout']);    }    protected function validator(array $data)    {        return Validator::make($data, [            'name' => 'required|max:255',            'email' => 'required|email|max:255|unique:admins',            'password' => 'required|confirmed|min:6',        ]);    }    protected function create(array $data)    {        return Admin::create([            'name' => $data['name'],            'email' => $data['email'],            'password' => bcrypt($data['password']),        ]);    }}
Salin selepas log masuk

编辑 AdminController.php 代码如下:

<?phpnamespace App\Http\Controllers;use Illuminate\Http\Request;use App\Http\Requests;use App\Http\Controllers\Controller;use Auth;class AdminController extends Controller{    public function __construct()    {        $this->middleware('auth:admin');    }    public function index()    {        $admin = Auth::guard('admin')->user();        return $admin->name;    }}
Salin selepas log masuk

6、视图文件创建及修改

最后我们要创建后台用户认证对应视图文件,这里我们简单拷贝前台用户视图模板并稍作修改即可:

cp -r resources/views/auth resources/views/admin
Salin selepas log masuk

修改 resources/views/admin 目录下登录及注册表单提交地址:

/login -> /admin/login/register -> /admin/register
Salin selepas log masuk

7、实现后台用户认证

在浏览器中访问 http://laravel.app/admin/register ,同样显示注册页面:

注册一个用户名为 admin 的用户,注册成功后,页面跳转到 http://laravel.app/admin ,说明认证成功。

好了,至此我们已经完成前后台用户同时登录认证功能。

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Jelaskan JSON Web Tokens (JWT) dan kes penggunaannya dalam PHP API. Jelaskan JSON Web Tokens (JWT) dan kes penggunaannya dalam PHP API. Apr 05, 2025 am 12:04 AM

JWT adalah standard terbuka berdasarkan JSON, yang digunakan untuk menghantar maklumat secara selamat antara pihak, terutamanya untuk pengesahan identiti dan pertukaran maklumat. 1. JWT terdiri daripada tiga bahagian: header, muatan dan tandatangan. 2. Prinsip kerja JWT termasuk tiga langkah: menjana JWT, mengesahkan JWT dan muatan parsing. 3. Apabila menggunakan JWT untuk pengesahan di PHP, JWT boleh dijana dan disahkan, dan peranan pengguna dan maklumat kebenaran boleh dimasukkan dalam penggunaan lanjutan. 4. Kesilapan umum termasuk kegagalan pengesahan tandatangan, tamat tempoh, dan muatan besar. Kemahiran penyahpepijatan termasuk menggunakan alat debugging dan pembalakan. 5. Pengoptimuman prestasi dan amalan terbaik termasuk menggunakan algoritma tandatangan yang sesuai, menetapkan tempoh kesahihan dengan munasabah,

Bagaimanakah sesi merampas kerja dan bagaimana anda dapat mengurangkannya dalam PHP? Bagaimanakah sesi merampas kerja dan bagaimana anda dapat mengurangkannya dalam PHP? Apr 06, 2025 am 12:02 AM

Sesi rampasan boleh dicapai melalui langkah -langkah berikut: 1. Dapatkan ID Sesi, 2. Gunakan ID Sesi, 3. Simpan sesi aktif. Kaedah untuk mengelakkan rampasan sesi dalam PHP termasuk: 1. Gunakan fungsi Sesi_Regenerate_ID () untuk menjana semula ID Sesi, 2. Data sesi stor melalui pangkalan data, 3.

Huraikan prinsip -prinsip yang kukuh dan bagaimana ia memohon kepada pembangunan PHP. Huraikan prinsip -prinsip yang kukuh dan bagaimana ia memohon kepada pembangunan PHP. Apr 03, 2025 am 12:04 AM

Penerapan prinsip pepejal dalam pembangunan PHP termasuk: 1. Prinsip Tanggungjawab Tunggal (SRP): Setiap kelas bertanggungjawab untuk hanya satu fungsi. 2. Prinsip Terbuka dan Tutup (OCP): Perubahan dicapai melalui lanjutan dan bukannya pengubahsuaian. 3. Prinsip Penggantian Lisch (LSP): Subkelas boleh menggantikan kelas asas tanpa menjejaskan ketepatan program. 4. Prinsip Pengasingan Antara Muka (ISP): Gunakan antara muka halus untuk mengelakkan kebergantungan dan kaedah yang tidak digunakan. 5. Prinsip Inversi Ketergantungan (DIP): Modul peringkat tinggi dan rendah bergantung kepada abstraksi dan dilaksanakan melalui suntikan ketergantungan.

Bagaimana cara menetapkan kebenaran secara automatik UnixSocket selepas sistem dimulakan semula? Bagaimana cara menetapkan kebenaran secara automatik UnixSocket selepas sistem dimulakan semula? Mar 31, 2025 pm 11:54 PM

Bagaimana untuk menetapkan keizinan UnixSocket secara automatik selepas sistem dimulakan semula. Setiap kali sistem dimulakan semula, kita perlu melaksanakan perintah berikut untuk mengubahsuai keizinan UnixSocket: sudo ...

Bagaimana cara debug mod CLI dalam phpstorm? Bagaimana cara debug mod CLI dalam phpstorm? Apr 01, 2025 pm 02:57 PM

Bagaimana cara debug mod CLI dalam phpstorm? Semasa membangun dengan PHPStorm, kadang -kadang kita perlu debug PHP dalam mod Interface Line Command (CLI) ...

Terangkan pengikatan statik lewat dalam php (statik: :). Terangkan pengikatan statik lewat dalam php (statik: :). Apr 03, 2025 am 12:04 AM

Mengikat statik (statik: :) Melaksanakan pengikatan statik lewat (LSB) dalam PHP, yang membolehkan kelas panggilan dirujuk dalam konteks statik dan bukannya menentukan kelas. 1) Proses parsing dilakukan pada masa runtime, 2) Cari kelas panggilan dalam hubungan warisan, 3) ia boleh membawa overhead prestasi.

Bagaimana cara menghantar permintaan pos yang mengandungi data JSON menggunakan perpustakaan php curl? Bagaimana cara menghantar permintaan pos yang mengandungi data JSON menggunakan perpustakaan php curl? Apr 01, 2025 pm 03:12 PM

Menghantar data JSON menggunakan perpustakaan Curl PHP dalam pembangunan PHP, sering kali perlu berinteraksi dengan API luaran. Salah satu cara biasa ialah menggunakan perpustakaan curl untuk menghantar post ...

See all articles