最适合入门的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 ...
随机推荐
- asp.net button控件 使用JS的 disabled
今天想用JS禁用asp.net的button控件,查了好久,都是一行代码.... document.getElementById("Button1").disabled ...
- 【SpringData学习】
1.注解@Modifying 在springData中,大部分给出的接口都是查询的,那要进行删除和更新的时候,大部分都需要使用@Query 进行手写代码.并且需要使用@Modifying注解. 使用场 ...
- PHP涉及的所有英文单词
PHP涉及的所有英文单词拦路虎 PHP再火,也会让一部同学心生畏惧,因为看到编辑器中那一串串英文单词,担心自己英文不好,从而对能学会PHP的决心产生动摇.其实大可不必,英文在学习PHP过程中真的连级别 ...
- Linux命令学习之路——内容剪切:cut
使用者:所有角色 用法:cut [ -bcdfn ] [ --complement ] filename 作用:截取文件中的部分字段用于展示或存储到新文件中 应用场景: 1.内容展示 : 截取一个或多 ...
- Gym - 101201E:Enclosure (点到凸包的切线)
题意:给点N棵树,前K棵是已经拥有的,现在可以再拥有一棵树,问形成的最大凸包面积. 思路:先求K棵树的凸包C,然后对于后面的N-K棵树,我们先判断是否在凸包内,如果不在,我们要求两个切线. 这里分类讨 ...
- Python全栈之路----进制运算
1.进制拾遗 二进制:01 八进制:01234567 十进制:0123456789 十六进制:0123456789ABCDEF (a是10,b是11,c是12,d是13,e是14,f是15) 2.进 ...
- SpringCloud使用Feign调用服务时,@FeignClient注解无法使用
关于解决这个问题的理论根源传送门:https://blog.csdn.net/alinyua/article/details/80070890我在这里只提供解决方案 0. 结论和解决方案 Spring ...
- java-IO流-字符流-FileReader、FileWriter、自定义小数组的拷贝、BufferedReader、BufferedWriter、readLine()和newLine()方法、LineNumberReader、使用指定的码表读写字符
###21.01_IO流(字符流FileReader) * 1.字符流是什么 * 字符流是可以直接读写字符的IO流 * 字符流读取字符, 就要先读取到字节数据, 然后转为字符. 如果要 ...
- IIS发布错误及解决
HTTP 错误 403.14 - Forbidden 解决办法: 打开iis管理器,找到对应网站,并找到目录浏览,双击打开. 点击启用即可. HTTP 错误 500.19 - Internal Se ...
- 在windows上使用ssh秘钥连接git服务器
git部署在centos7上 安装好git后,新建一个用户test(注意要加入git用户组)配置ssh秘钥登录,我的另一篇博客有写配置步骤 重点的地方是在windows系统上使用秘钥登录git服务器 ...