Laravel 验证 教程
英文源文章: https://www.techiediaries.com/laravel-authentication-tutorial/
在上一篇教程中,我们已经接触过Laravel,同时介绍了最新版本的Laravel的新功能。
本次教程我们通过登录,注册,登出以及重置密码这四个部分示例来学习如何的处理Laravel认证逻辑;
首先,请确保你理解了上一个教程以及你已经通过 http://localhost:8000 启动了你的开发服务器;
【译注:如果使用的时laragon 会自动生成你的网址如:http://laraveltutorial.test 】
自Laravel 6之后, auth脚手架【auth搭建器】已经被分拆至Laravel/UI 扩展包当中,需要自己通过命令工具行来安装:
1 composer require laravel/ui
执行之后,输出
Using version ^1.0 for laravel/ui
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
- Installing laravel/ui (v1.0.1): Downloading (100%)
Writing lock file
[...]
接下来,请执行命令:
1 php artisan ui vue --auth
将会输出:
Vue scaffolding installed successfully.
Please run "npm install && npm run dev" to compile your fresh scaffolding.
Authentication scaffolding generated successfully.
在新建一个Laravel 6的项目时,为了添加认证逻辑的路由,以及生成完成的注册,登录,重置密码设计布局,推荐直接执行上述命令,它同时会生成一个HomeController控制器用来处理登陆后的请求;
php artisan ui vue --auth命令会在resources/views/auth 文件夹下创建必要的几个用于验证的视图,以及在resources/views/layouts文件夹下使用Bootstrap css框架创建一些只有基本布局的视图blade,至此,认证控制器的相关路由以及视图创建添加完毕,用户可以注册登录。
认证控制器包含了认证用户以及向数据库中添加新用户的逻辑,所以不必自己再手动添加任何代码来启用认证,除非你有自定义外观或行为的需求,以后我们会再来讨论如何自定义。
在浏览器打开 http://localhost:8000/register ,出现注册界面:
打开 http://localhost:8000/login,你会看到登录界面:
打开 http://localhost:8000/password/reset ,可以看到密码重置页面,
上面三个界面目前都还没有设置样式,可以通过在项目根目录下打开控制台,键入下面的代码安装并生成前端依赖:
1 npm install
2 npm run dev
注意,如果执行安装过程中,抛出 Unhandled rejection Error: EACCES: permission denied 【没有权限异常】,
只需要在上述命令前,使用下列sudo命令【Ubuntu及MacOS系统】:
1 sudo npm install
2 sudo npm run dev
安装完成后,再次打开 http://localhost:8000/login ,可以看到较之前更美观的登录页面:
尝试注册一个账号,注册后将会直接登录,并被转向/home 路径,触发HomeContoller控制器中的逻辑,返回home view界面,该界面中可以调用logout实现退出登录:【译注:routes/web.php文件中 Auth::routes(); 管理用户的RESTFul-API调用】
接下来,打开routes/web.php文件,可以看到如下代码:
1 <?php
2
3 Route::get('/', function () {
4 return view('welcome');
5 });
6
7 Auth::routes();
8
9 Route::get('/home', 'HomeController@index')->name('home');
Auth::routes();
方法包含了用户登录,注册,退出以及重置密码的路由,这个方法和home路由【Route::get('/home')…】在认证搭建器【脚手架】被添加的时候同时添加到web.php文件中。
LoginController, RegisterController, and ResetPasswordController. 【登录控制器,注册控制器,密码重置控制器】
Laravel提供了开箱即可使用【注:类似开袋即食,拎包入住】的 登录控制器,注册控制器,密码重置控制器三个控制器,如果你有自定义特殊需求,也可以提供自己的实现。
认证控制器文件位于app/Http/Controllers/Auth 文件夹内。
路由的安全保护
我们给网络程序添加认证主要还是为了保护页面或路由,防止未授权的访问。
可以使用Laravel的 中间件来实现保护。
Laravel有一个内建的授权中间件,位于Illuminate\Auth\Middleware\Authenticate目录下。
同时,由于该中间件已被注册在你app的HTTP 内核中,所以使用的时候可以简单的向需要做路由保护的路由中添加,来防止未经授权的用户访问该路由。
可以通过用户主页的代码来学习如何使用该中间件保护路由:
打开路径为:app/Http/Controllers/HomeController.php的文件,代码如下:
1 <?php
2
3 namespace App\Http\Controllers;
4
5 use Illuminate\Http\Request;
6
7 class HomeController extends Controller
8 {
9 10 public function __construct()//译注:构造函数
11 {
12 $this->middleware('auth');
13 }
14 public function index()
15 {
16 return view('home');
17 }
18 }
在HomeController主页控制器的构造函数中,可以看到 向middleware方法传入了’auth’参数的方式,来实现对auth中间件的调用。
middleware方法可以在控制器中调用,也可以在路由定义中调用。 尝试移除HomeController中构造函数对middleware方法的调用。然后打开routes/web.php文件,更新如下代码:
1 Route::get('/home', 'HomeController@index')->name('home')->middleware('auth');
同样实现了对路由的保护。
总结
本篇教程中,我们向Laravel框架的CRM程序中添加了认证。
由于Laravel框架提供了全套开箱即可使用的注册,登录,退出及密码重置的认证系统,在Laravel中实现认证逻辑可以说是易如反掌,可以提高开发效率。假如你有特殊需求,你可以在Laravel已有的认证框架基础上,同时提供自定义的认证控制器,Auth facade【外观模式】中已经提供了多种认证服务,任君挑选。
如果你使用过之前版本的Laravel,你会发现在Laravel 6 中发生了部分改变。比如,基础认证路由和界面的构建,由Laravel 5中的 php artisan make:auth命令,被替换成了通过Composer命令事先安装被分离出去的laravel/ui扩展包,然后再调用 php artisan ui vue --auth命令的方式来构建。
Laravel 验证 教程的更多相关文章
- 最适合入门的Laravel中级教程(一)
Laravel 是一个全栈框架: 我们使用 Laravel 开发业务常见有 3 个方向: 前端页面和后端逻辑混合的应用 主要是面向对 SEO 有需求的项目: 比如说新闻资讯博客文章等: 一般在控制器中 ...
- Laravel初级教程浅显易懂适合入门
整理了一些Laravel初级教程,浅显易懂,特适合入门,留给刚学习laravel想快速上手有需要的朋友 最适合入门的laravel初级教程(一)序言 最适合入门的laravel初级教程(二)安装使用 ...
- 最适合入门的Laravel中级教程(三)表单验证
做开发有个原则是永远不能信任用户输入的数据: 即便前端已经做了验证: 在后端 php 也必须要再次验证: laravel 为表单验证提供了强大且简单的方案: 创建示例路由: routes/web.ph ...
- 最适合入门的Laravel中级教程(二)用户认证
之前的初级教程主要是学习简单的增删改查: 接着的中级教程的目标是在初级教程的基础上能写出更复杂更健壮的程序: 我们先来学习 laravel 的用户认证功能: 在现代网站中基本都有用户系统: 而我们每开 ...
- laravel验证规则
就拿laravel的登入验证来举例: 1.进入login控制器, use AuthenticatesUsers;从这里点进去找到验证规则 //验证protected function validate ...
- laravel 验证机制validation
Laravel 中 validation 验证 返回中文提示 全局设置 自己建一个zn文件夹,然后把en的4个文件全复制过去,修改validation.php的代码为下面的内容,然后在app.php修 ...
- [Laravel 5 教程学习笔记] 一、Windows下安装Laravel 5
最近看到一些统计,说是Laravel是目前PHP框架中使用最多的,所以就想来学习下.之前其实也想过学习这个框架,但是每次到第一步安装的时候就卡住了,无奈 .之前用ThinkPHP的时候,下载完放到网 ...
- 最适合入门的Laravel中级教程(四)前端开发
Laravel 使用 npm 安装前端依赖: npm 是一个类似 composer 的工具: 用于管理前端的各种依赖包: 在使用之前需要先安装 node : Windows 下可以在官网下载安装: h ...
- Laravel 5 教程 - 文件上传
一.简介 Laravel 有很棒的文件系统抽象层,是基于 Frank de Jonge 的 Flysystem 扩展包. Laravel 集成的 Flysystem 提供了简单的接口,可以操作本地端空 ...
随机推荐
- 中国科技股赴美IPO的游戏结束了吗?
编辑 | 于斌 出品 | 于见(mpyujian) 有关斗鱼直播的消息,一直层出不求.最近前几天又有捷报传出,斗鱼走出国门,在美国上市,开始了自己的新征程. 但据悉,斗鱼国际控股有限公司可能刚刚达到外 ...
- 移动APP漏洞自动化检测平台建设
移动APP漏洞自动化检测平台建设 前言:本文是<移动APP客户端安全笔记>系列原创文章中的第一篇,主要讲的是企业移动APP自动化漏洞检测平台建设,移动APP漏洞检测发展史与前沿技术,A ...
- Linux源码编译安装nginx
ps:一切从简 一.安装所需环境: yum -y install gcc gcc-c++ automake pcre pcre-devel zlip zlib-devel openssl openss ...
- IE6下的png不透明问题
前几天刚做完一个小需求,但是在兼容ie方面用了比较久的时间,主要是切面那边用的背景图都是png格式的,而经过查找知道,ie6对png图片透明部分渲染效果是不透明的,我看到的是淡淡的绿色,简单的处理方式 ...
- [C++_QT] Error: Not a signal or slot declaration
问题: 在Qt工程中添加了一个新的窗口之后 一直报错 如下 单单从错误描述上看 是缺少信号或者槽 但是我确定没有缺少啊 然后第二个错误显示了一个mox_xxxx文件 然后我就去那个目录下去找那个文件 ...
- 猜解数据库(MYSQL)信息
/Less-1/?id=1' and if (length(database())=8,sleep(5),0) --+ 注:http://43.247.91.228:84/Less-1/为靶场地址,发 ...
- ZOJ4117 BaoBao Loves Reading(2019山东省赛)
按照计划读书,第i分钟要读第ai本书,起初桌子是空的,所有书都在书架上,如果要读的书不在桌子上,就需要把书从书架上拿到桌子上,如果桌子已经满了,则需要先把桌子上最早读的一本书放回书架,求当桌子容量为k ...
- same-security-traffic
关于Inter-interface和intra-interface: 要允许具有相同安全级别的接口之间的通信,或允许流量进入和退出同一接口,请在全局配置模式下使用same-security-traff ...
- ISR4K-IOS XE EPC
1.该操作在ISR4K的平台操作,简单的执行了一个控制层面的抓包 配置命令: R01#monitor capture A control-plane both R01#monitor capture ...
- 推荐一款好用的博客离线编辑工具——OpenLiveWriter
1.前言 我们自己一般在写博客的时候都是在博客官网后台写的,但是如果要在多个平台发布博客的话,那就要复制好前面写好的博客,然后再去其它博客平台发布,可见非常的麻烦. 这里推荐一款好用的离线多功能,多平 ...