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');
相關文章
相關標籤/搜索