最适合入门的Laravel中级教程(二)用户认证
之前的初级教程主要是学习简单的增删改查;
接着的中级教程的目标是在初级教程的基础上能写出更复杂更健壮的程序;
我们先来学习 laravel 的用户认证功能;
在现代网站中基本都有用户系统;
而我们每开发一个网站就实现一遍用户系统想想也是挺心累的;
还好 Laravel 已经贴心的帮我们完成了常用的用户认证功能;
比如说 注册、登录、重置密码;
并设计好了用户表 users ;
编写了带有登录登出功能的 Auth 类;
而且可以非常方便的进行扩展修改;
再个 Laravel 的用户系统跟其他功能比如 Passport 等结合也很紧密;
因此墙裂推荐使用 Laravel 的用户系统;
要使用用户认证功能需要先运行命令行;
php artisan make:auth
通过 git 我们可以看到有这些文件发生了变化;

访问下 登录页面看看效果 /login
;

开发项目的时候一般不会使用默认的页面;
如果需要更改页面结构或者样式;
直接修改 resources/views/auth 目录下对应的文件即可;
查看 web.php 可以发现增加了如下两行;
Auth::routes();
Route::get('/home', 'HomeController@index')->name('home');
执行 route:list
看下新增的路由;
php artisan route:list

如果修改视图文件已经不能满足你的需求了;
我们还可以在 web.php 中定义路由来覆盖上图中的这些内容;
或者直接覆盖控制器中的方法;
在成功注册成功、登录成功、重置密码成功后默认都会重定向到 /home
页面;
如果说想想在登录成功后重定向到个人中心 /user
页面;
我可以修改 app/Http/Controllers/Auth/LoginController.php 文件中的 $redirectTo
属性;

甚至如果需要根据登录的用户的角色跳转到不同的页面;
Laravel 还预留了 redirectPath
方法;
只需要在 app/Http/Controllers/Auth/LoginController.php 中自定义 redirectPath
方法即可;
/**
* 可以根据逻辑判断自定义跳转链接
*/
public function redirectPath()
{
}
在国内很多时候我们都是选择使用手机号登录的;
那么我们可以在 users 表中增加 phone 列;
然后参考图中的 AuthenticatesUsers
trait 的 login
方法;

Auth 也提供了 attempt
方法用来认证用户;
\Auth::attempt(['phone' => '***', 'password' => '123456'])
当登录成功后会向 session 中存储登录的用户id ;
我们注册一个用户并登录;
然后在 app/Http/Controllers/HomeController.php 的 index
中打印下 session 看下;
public function index()
{
dump(session()->all());
return view('home');
}
访问 /home
页面;

这个 login_web_59ba36addc2b2f9401580f014c7f58ea4e30989d
明显不是一个固定 key ;
我们如果想获取登录的用户 id 可以通过下面这个方式;
$userId = Auth::id();
如果说想获取包括用户名等完整的用户信息则可以这样;
$user = Auth::user();
修改下 app/Http/Controllers/HomeController.php 的 index
再打印;
public function index()
{
dump(session()->all());
dump(\Auth::id());
dump(\Auth::user());
return view('home');
}

很多网站都是分成面向普通用户的前台和给管理员用的后台的;
这种情况下我们可以自定义多套用户体系 guard;
比如说我的博客就分为不需要注册直接使用第三方平台的 oauth 和不允许注册的后台管理 admin ;
auth.php
'guards' => [
'admin' => [
'driver' => 'session',
'provider' => 'users',
],
'oauth' => [
'driver' => 'session',
'provider' => 'oauth',
],
],
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\Models\User::class,
],
'oauth' => [
'driver' => 'eloquent',
'model' => App\Models\OauthUser::class,
],
],
guard 的用法可以参考我的博客源代码; https://github.com/baijunyao/laravel-bjyblog
这里就不多讲了;
吸取初级教程的教训;
中级教程一开始就把代码按章节推送到 github 上供童鞋们参考;
链接在这里: https://github.com/baijunyao/laravel-course
最适合入门的Laravel中级教程(二)用户认证的更多相关文章
- 最适合入门的Laravel中级教程(一)
Laravel 是一个全栈框架: 我们使用 Laravel 开发业务常见有 3 个方向: 前端页面和后端逻辑混合的应用 主要是面向对 SEO 有需求的项目: 比如说新闻资讯博客文章等: 一般在控制器中 ...
- 最适合入门的Laravel中级教程(四)前端开发
Laravel 使用 npm 安装前端依赖: npm 是一个类似 composer 的工具: 用于管理前端的各种依赖包: 在使用之前需要先安装 node : Windows 下可以在官网下载安装: h ...
- 最适合入门的Laravel中级教程(三)表单验证
做开发有个原则是永远不能信任用户输入的数据: 即便前端已经做了验证: 在后端 php 也必须要再次验证: laravel 为表单验证提供了强大且简单的方案: 创建示例路由: routes/web.ph ...
- Laravel核心解读 -- 扩展用户认证系统
扩展用户认证系统 上一节我们介绍了Laravel Auth系统实现的一些细节知道了Laravel是如何应用看守器和用户提供器来进行用户认证的,但是针对我们自己开发的项目或多或少地我们都会需要在自带的看 ...
- Laravel初级教程浅显易懂适合入门
整理了一些Laravel初级教程,浅显易懂,特适合入门,留给刚学习laravel想快速上手有需要的朋友 最适合入门的laravel初级教程(一)序言 最适合入门的laravel初级教程(二)安装使用 ...
- Laravel 5 系列入门教程(一)【最适合中国人的 Laravel 教程】
Laravel 5 系列入门教程(一)[最适合中国人的 Laravel 教程] 分享⋅ johnlui⋅ 于 2年前 ⋅ 最后回复由 skys215于 11个月前 ⋅ 17543 阅读 原文发表在 ...
- Laravel 从入门到精通系列教程
转载;https://laravelacademy.org/laravel-tutorial-5_7 适用于 Laravel 5.5.5.6.5.7 版本,本系列教程将围绕一个 LTS 版本,然后采取 ...
- 无废话ExtJs 入门教程二十一[继承:Extend]
无废话ExtJs 入门教程二十一[继承:Extend] extjs技术交流,欢迎加群(201926085) 在开发中,我们在使用视图组件时,经常要设置宽度,高度,标题等属性.而这些属性可以通过“继承” ...
- 无废话ExtJs 入门教程二十[数据交互:AJAX]
无废话ExtJs 入门教程二十[数据交互:AJAX] extjs技术交流,欢迎加群(521711109) 1.代码如下: 1 <!DOCTYPE html PUBLIC "-//W3C ...
随机推荐
- SQLite相关异常
SQLite的异常大多都和异常IO操作有关,这类异常通常在debug测试的时候难以发现通常和用户的操作有关系,根据我遇到的包括以下几种: 1.No transaction is active 这种情况 ...
- ADO.NET 的五个对象
首先来一张关系图,了解大概关系. 知道了整个大关系之后,我们在具体看一下他们五个的分工: 1. SqlConnection 在访问数据时,我们首先必须要建立数据库的物理连接.· 2.SqlComman ...
- Matlab_xcorr_互相关函数的讨论
假设两个平稳信号 $\textbf{x}$ 和 $\textbf{y}$ ,如果 $x\left(t+\tau\right)= y\left(t\right)$ ,则可通过互相关求 $\tau$ .由 ...
- Tex_安装_在Ubuntu系统下
$\LaTeX$是一个强大的排版软件,在数学公式.表格.甚至是科学绘图方面有着独特优势.本文在Ubuntu系统下,整理Tex安装相关的操作,以为备忘.所引链接都未同作者商量,如有不妥望及时告知. 命令 ...
- selenium+grid做分布式测试
一.grid介绍 1.本文用的是selenium-server-standalone-3.8.1.jar 2.Firefox用的55版本和对应的驱动 二.grid使用流程说明比如有个A机器,作用是hu ...
- 无法新建EXCLE
Regedit 进入注册表,找到HKEY_CLASSES_ROOT>.xls和.xlsx的ShellNew的值设置为:C:\Windows\ShellNew\EXCEL12.XLSX
- C++中的指针,指针函数和函数指针
指针是C或C++中的一大难题,因此弄懂指针对C和C++的学习有很大的帮助,最近一直在研究指针,因此写一篇随笔把心得记录一下. 简单来说指针也是一种变量,只不过指针变量所存储的不是我们直观上看到的,而是 ...
- Python全栈之路----函数进阶----装饰器
Python之路,Day4 - Python基础4 (new版) 装饰器 user_status = False #用户登录后改为True def login(func): #传入想调用的函数名 de ...
- 测试那些事儿—SQL Server服务器角色和数据库用户角色
登录名:登录服务器的用户账号: 服务器角色:登录名对该服务器具有的权限,角色分多种的,一个角色可以有多个登录名,如操作系统的系统用户可以有多个. SQL服务器角色 sysadmin ...
- 会话的保持和form表单
会话的保持和form表单 cookie 设置cookie from django.shortcuts import render, HttpResponse, redirect, reverse de ...