Laravel-初体验笔记

一直想学Laravel却动不了手,恰好须要研究一个workflow之类的功能,有个Laravel项目一个登录就把我搞晕,看Laravel文档看的也不能看进去,直接新建个Laravel仿一个,动手搞起来才是最有效的。php

从注册登陆开始认识Lavarel

  1. Laravel 5.3 用户验证源码探究 (一) 路由与注册
  2. Laravel5.4注册登陆解析及使用教程
咱们首先看看 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 容器 ?html

Laravel使用IoC(Inversion of Control,控制倒转,这是一个设计模式,能够先查看下百科)容器这个强有力的工具管理类依赖。依赖注入(也是一种设计模式,通常用于实现IoC)是一个不用编写固定代码来处理类之间依赖的方法,相反的,这些依赖是在运行时注入的,这样容许处理依赖时具备更大的灵活性。

看到类已经引入了文件,类中还use。和这个题主有一样的困惑:
Laravel 中的 use 操做符为何要在类里面写?,原来是引入Trait,通俗一点的意义是:能把重复的方法拆分到一个文件,经过 use 引入以达到代码复用的目的。本身写PHP的时候还真没有这么用到过。laravel

找回密码修复

找回密码时候出错,不存在password_resets表,
和之前同样,migrate只能执行一个users表,须要移动到新文件夹,从新把--path=路径文件夹加上就能够建立数据表。segmentfault

以前只能建立一个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
。弃用这条,不过文章里的分析过程能够很详细能够学习学习执行流程。app

再参考这篇如何在 Laravel 中使用 SMTP 发送邮件(适用于 16三、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无效的提示。太方便了 :) ==Token存储在password_resets表里,使用过以后则删除。==
重置密码
P.S. 中途又出现几回550退信,收件服务器设置添加白名单解决,再以后被系统拦截,只能手动取回。

过年以前写的一篇笔记,原本打算开始移植流程管理的,就初体验到这吧。

其它参考

$router->model('task', 'App\Task'); [5.2] 修改成
Route::model('task', 'App\Task');
相关文章
相关标签/搜索