Laravel-学习笔记-多用户表登陆分析与实现(Authentication)

本文档详细分析了Laravel5.5框架中实现多用户表登录的过程,包括用户验证、路由配置、登录控制器修改、中间件使用等步骤,并提供了具体的代码示例。通过配置新的Guard和Provider,重写关键方法,实现了管理员和普通用户的区分登录。
摘要由CSDN通过智能技术生成

个人博客:www.saoguang.top​​​​​​​

框架版本:Laravel5.5

Laravel-学习笔记-多用户表登陆分析与实现
(Authentication)

前言:根据Laravel的开发文档,只需要下面两条artisan命令就能够构建起一个完整的认证系统,这个认证系统只支持单用户类型。但是很多情况下,我们的网站需要有管理员用户,有时管理员用户还和普通用户的ID不一样,可能普通用户使用邮箱登陆而管理员却不是。这种情况下就可以使用多用户表实现了。Laravel自己生成的作为普通用户,建立的管理员则只需要登陆功能。管理员账号信息使用数据填充加入就行了。

php artisan make:auth
php artisan migrate

整个实现过程都使用自带的User来进行修改。

一、分析Laravel本身User的登陆验证过程。(分析的重点我用蓝色标出)

<表面上分为下面的几个步骤>

1.进入登陆页面

2.验证表单

3.调用Illuminate\Support\Facades\Auth;下的Auth::Guard('guard_name')->attempt(['字段名'=>$对应的输入值,...], $remember)来进行用户认证,也就是验证账号和密码。

4.如果3步中认证通过,就直接重定向到指定页面,(比如管理员重定向到管理员的页面)

<5.如果没登陆管理员的情况下,进入管理员页面,中间件验证没登陆,就重定向到登陆页面>

<6.如果登陆了管理员的情况下,进入登陆页面,中间件验证,如果登陆了就重定向到管理员页面>

 

<下面来分析下,每个步骤>

1.进入登陆页面

登陆页面当然需要先看路由,执行完上面的两条artisan命令后,路由web.php中会添加两条语句。

Auth::routes();
Route::get('/home', 'HomeController@index')->name('home');

先看Auth::routes();这个语句包含多个路由,可以去vendor\laravel\framework\src\Illuminate\Routing目录下的Router.php中找到这个函数。

 

(我们只看登陆和注销的路由,下面的都不看。)可以看出login的get路由调用了LoginController的showLoginForm方法,并路由命名为login。

在这个类的中

返回登陆页面,那么到时候我们新建一个AdminHomeController时就需要重载这个方法,让他返回的是管理员的登陆页面。

 

2.验证表单

继续看下一条路由。重头戏来了,LoginController@login

找到这个方法,就在上面点。

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

这里几个函数分别进去看,

(1)$this->validateLogin($request);

一看就清楚了,这个就是表单验证,这个username()是它的成员方法,默认返回的是email,我们可以重载这个方法,让它返回其他字段,就能作为账号验证字段了。

(2)

这一块的作用从注释中能看出,是负责错误次数记录,以及暂时锁定用户的,这个在文档中叙述入下。

登录限制#
Laravel 内置的控制器 LoginController 已经包含了 Illuminate\Foundation\Auth\ThrottlesLogins trait。
默认情况下,如果用户在进行几次尝试后仍不能提供正确的凭证,该用户将在一分钟内无法进行登录。这个限制
基于用户的用户名/邮件地址和 IP 地址。

 

3.调用Illuminate\Support\Facades\Auth;下的Auth::Guard('guard_name')->attempt(['字段名'=>$对应的输入值,...], $remember)来进行用户认证,也就是验证账号和密码。

(3)

这里就是登陆验证了,看return语句就知道了。

/**
 * Attempt to log the user into the application.
 *
 * @param  \Illuminate\Http\Request  $request
 *
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值