Laravel-初体验笔记
一直想学Laravel却动不了手,刚好需要研究一个workflow之类的功能,有个Laravel项目一个登陆就把我搞晕,看Laravel文档看的也不能看进去,直接新建个Laravel仿一个,动手搞起来才是最有效的。
从注册登录开始认识Lavarel
我们首先看看 Auth::routes(),定义在 vendor/laravel/framework/src/Illuminate/Support/Facades/Auth.php:
public static function routes()
{
static::$app->make('router')->auth();
}
这里由 IoC 容器 解析了一个 Illuminate\Routing\Router 类的实例,再调用里面的 auth() 方法。
IoC 容器 ?
Laravel使用IoC(Inversion of Control,控制倒转,这是一个设计模式,可以先查看下百科)容器这个强有力的工具管理类依赖。依赖注入(也是一种设计模式,一般用于实现IoC)是一个不用编写固定代码来处理类之间依赖的方法,相反的,这些依赖是在运行时注入的,这样允许处理依赖时具有更大的灵活性。
看到类已经引入了文件,类中还use。和这个题主有同样的困惑:
Laravel 中的 use 操作符为什么要在类里面写?,原来是引入Trait,通俗一点的意义是:能把重复的方法拆分到一个文件,通过 use 引入以达到代码复用的目的。自己写PHP的时候还真没有这么用到过。
找回密码修复
找回密码时候出错,不存在password_resets表,
和以前一样,migrate只能执行一个users表,需要移动到新文件夹,重新把--path=路径文件夹加上就可以创建数据表。
之前只能创建一个users表没有急需建表的原因是unique报错,原因是添加unique索引时
$table->string('email')->unique();报错导致没创建所有的表,解决:Laravel 5.4: 特殊字段太长报错
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key len
gth is 1000 bytes (SQL: alter table `users` add unique `users_email_unique`(`email`))
然后报错Expected response code 250 but got code "530", with message "530 5.7.1 Authentication required",邮件配置问题。
改好之后,再次发送,We have e-mailed your password reset link!发送成功,但是没有收到邮件,查原邮件是 系统退信 550 Mail content denied 出错原因:该邮件内容涉嫌大量群发,并且被多数用户投诉为垃圾邮件。
参考laravel 用户发送邮件重置密码。弃用这条,不过文章里的分析过程可以很详细可以学习学习执行流程。
可是这里的SendCloudTemplate是什么啊,原来用的是SendCloud
再参考这篇如何在 Laravel 中使用 SMTP 发送邮件(适用于 163、QQ、Gmail 等),不过我没改config/mail.php,改的配置.env。还是在User.php中重写sendPasswordResetNotification($token)方法
/*
*reset password email
*/
public function sendPasswordResetNotification($token){
$url=url(config('app.url').route('password.reset', $token, false));
$data = ['email'=>$this->email, 'name'=>$this->name,'url'=>$url];
Mail::send('resete', $data, function($message) use($data){
$message->to($data['email'], $data['name'])->subject('workFlow找回密码!');
});
}
'resete'为模板: resete.blade.php
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
</head>
<body>
<a href="{{$url}}" target="_blank">{{$name}},重置密码</a>
</body>
</html>
再次发送,成功。收到邮件带找回密码链接,带Token

点击之后,新链接输入邮箱和新密码就更改成功。下图是token无效的提示。太方便了 :) ==Token存储在password_resets表里,使用过之后则删除。==

P.S. 中途又出现几次550退信,收件服务器设置添加白名单解决,再之后被系统拦截,只能手动取回。
过年之前写的一篇笔记,本来打算开始移植流程管理的,就初体验到这吧。
其它参考
- Laravel 5.1 如何 migrate 某一个指定的迁移文件?
- [ Laravel 5.4 文档 ] 安全 —— 密码重置
Laravel 2 这样才能了解框架
- 入门很不错的 Laravel 5.2 中级任务清单 中
$router->model('task', 'App\Task'); [5.2] 修改为
Route::model('task', 'App\Task');
Laravel-初体验笔记的更多相关文章
- Could not open input file: artisan 【Laravel初体验】
1,情景描述:在命令行窗口写入php artisan make:model Models\MenuModel用于创建模型时,出现此错误(Could not open input file: artis ...
- Linux -初体验笔记
课堂笔记 鸟哥Linux私房菜 Linux 版本很多,内核都是一样的 计算机基础知识: 1.完整计算机系统:软件+硬件 硬件:物理装置本身,计算机的物质基础 软件:相对硬件而言, 程序:计算机完成一项 ...
- VS Code python初体验笔记
之前一直都是使用Notepad++来编写Python代码,后来想起来之前查资料的时候有个VS Code可以编写一些的脚本语言(js,node.js)甚至是高级编程语言(C#,PHP,JAVA,Pyth ...
- VSTO学习笔记(十五)Office 2013 初体验
原文:VSTO学习笔记(十五)Office 2013 初体验 Office 2013 近期发布了首个面向消费者的预览版本,我也于第一时间进行了更新试用.从此开始VSTO系列全面转向Office 201 ...
- Spring Boot 学习笔记1——初体验之3分钟启动你的Web应用[z]
前言 早在去年就简单的使用了一下Spring Boot,当时就被其便捷的功能所震惊.但是那是也没有深入的研究,随着其在业界被应用的越来越广泛,因此决定好好地深入学习一下,将自己的学习心得在此记录,本文 ...
- 数据结构(逻辑结构,物理结构,特点) C#多线程编程的同步也线程安全 C#多线程编程笔记 String 与 StringBuilder (StringBuffer) 数据结构与算法-初体验(极客专栏)
数据结构(逻辑结构,物理结构,特点) 一.数据的逻辑结构:指反映数据元素之间的逻辑关系的数据结构,其中的逻辑关系是指数据元素之间的前后件关系,而与他们在计算机中的存储位置无关.逻辑结构包括: 集合 数 ...
- django初体验 学习笔记
django环境搭建 1.安装Python 2.ipython sudo apt-get install ipython sudo pip instal ...
- python--爬虫入门(七)urllib库初体验以及中文编码问题的探讨
python系列均基于python3.4环境 ---------@_@? --------------------------------------------------------------- ...
- grunt 构建工具(build tool)初体验
操作环境:win8 系统,建议使用 git bash (window下的命令行工具) 1,安装node.js 官网下载:https://nodejs.org/ 直接点击install ,会根据你的操 ...
随机推荐
- Linux crontab配置
crontab配置 1.命令功能 通过crontab 命令,我们可以在固定的间隔时间执行指定的系统指令或 shell script脚本.时间间隔的单位可以是分钟.小时.日.月.周及以上的任意组合.这个 ...
- windows系统如何设置域名解析
C:\Windows\System32\drivers\etc
- 图数据库cayley+mongo的起航之旅
图数据库,目前比较主流的可能是Neo4j以及cayley了.但是,由于Neo4j只有社区版是免费的,所以,选择cayley作为项目的最终选择! 今天就简单的介绍下,我的起航之旅. 1.安装go语言环境 ...
- 一个基于netty的websocket聊天demo
这里,仅仅是一个demo,模拟客户基于浏览器咨询卖家问题的场景,但是,这里的demo中,卖家不是人,是基于netty的程序(我就叫你uglyRobot吧),自动回复了客户问的问题. 项目特点如下: 1 ...
- php输出异常的检查方法
同事在用php展示验证码时,老是无法正常显示 但是的代码在别的地方正常运行 查看了输出,是有内容的,但是就是不显示 根据经验,应该是输出的内容有混淆,就是说在输出图片内容的时候,掺杂进去额外的信息 通 ...
- 持续集成(Continuous Integration)基本概念与实践
本文由Markdown语法编辑器编辑完成. From https://blog.csdn.net/inter_peng/article/details/53131831 1. 持续集成的概念 持续集成 ...
- Android开发之内部类篇
内部类: 1.内部类的第一个好处,隐藏你不想让别人知道的操作,也即封装性. 2.非静态内部类对象有着指向其外部类对象的引用 等等. 创建项目: 1.File---->New----->ja ...
- react基础
上一篇文章主要是记录了自己是如何创建react项目的,今天则主要是总结一下react中的一个基础入门知识,包括数据定义和绑定.属性绑定.数组循环等等. 组件继承和挂载 当我们使用脚手架或者命令行创建一 ...
- 『Hi,我是易建科技eKing Cloud!』
写在前面:这是我的第一篇自我介绍式文章,是对易建科技我所在云服务事业群的云平台产品和业务的总结和介绍.本文始发于 Linux宝库 公众号,这是原文链接.感谢公众号主人陈绪总,感谢公众号的编辑们!感谢易 ...
- [UE4]场景加载界面
就可以这样就可以了,当另外一个场景成功打开后,场景加载界面也会自动消失(因为这是加载界面是添加到当前场景). 加上delay是为了在小场景测试的时候可以方便看到加载场景,避免场景加载过快看不到,不加的 ...