最适合入门的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 ...
随机推荐
- Linux 驱动——Led驱动1
led_drv.c驱动文件: #include <linux/module.h>#include <linux/kernel.h>#include <linux/init ...
- webStrom访问只一个很简单的html文件的时候显示local host无法访问。。
直接从文件夹运行html没问题的,,,然后百度半天,,乱七八糟的答案, 1.谷歌商店安装 JB插件--插件地址 https://chrome.google.com/webstore/detail/je ...
- lvm创建和在线扩容
添加磁盘后创建lvm lsblk 或是fdisk -l 查看添加的磁盘 fdisk -l lsblk 进入到sdb创建分区 n新建p标准分区e扩展分区1序列号 加10G或全给 p查看 要创建lv ...
- Unity在UI界面上显示3D模型/物体,控制模型旋转
Unity3D物体在UI界面的显示 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- ...
- idea xml版本修改问题
STEP 1.选中模块 STEP 2.file---->Project Structure---->Facets---->把相应模块的给删除"-"----> ...
- Python全栈之路----数据类型—字典
字典:可变,一种key-value的数据类型 info = { 'stu1101' : 'TengLan Wu' , 'stu1102' : 'LongZe Luola' , 'stu1103' : ...
- GoStudy——Go语言入门第一个事例程序:HelloWorld.go
package main import ( "fmt" ) func main() { fmt.Println("Hello,world!!!--2019年4月1 ...
- 【转载】Ocelot网关的路由热更新
调用API修改Ocelot的配置文件 May 11, 2018 | netcoreocelot | 410 阅读 Ocelot是一个基于.net core的开源webapi服务网关开源项目,功能比较强 ...
- C语言strcmp()实现
函数原型: extern int strcmp(const char *s1,const char *s2); 比较两个字符串 设这两个字符串为str1,str2, 若str1=str2,则返回 ...
- Linux 文件查看,文件夹切换,权限查看
当前用户只操作当前用户目录 1. 输入终端显示内容: 用户 @ 系统 : 路径信息 $ $ 表示普通用户 家目录 # 表示超级用户 家目录 [sudo -i ] 使用root用户 : 使用 ...