laravel 自带重置密码源码分析

上面是 laravel 重置密码的逻辑控制器 已经帮我处理好了..很方便 我们一步一步的分析
1.App\Http\Controllers\Auth\ForgotPasswordController@sendResetLinkEmail 这个是表单模板路由

这个控制 看上去东西很少.一个构造方法 还有一个trait 这个中间件的作用 就是防止已经登录的用户访问这个路由 我们看一下逻辑

先到kernel文件找到guest中间件 对应的实际的中间件类

看到没 就是判断的 用户是否已经登录 已经登录直接跳转到首页 。这个中间件 也常用来限制已经登录的用户还能访问登录页面的情况 加上这个中间件就可以了.
我们看上面那个trait类吧

这就是显示重置密码的表单的路由 没啥好说的

这个是实际发送邮箱验证的路由
$this->validateEmail($request); 就是验证参数
看第二句 broker是啥。。。。

这是一个facade 我们找到对应的类


找到了 是对应PasswordBrokerManager 这个类

\Illuminate\Contracts\Auth\PasswordBroker 我们看下返回值 目测是返回一个实现这个接口的类


$this->resolve($name) 看这个


看auth.php

$this->createTokenRepository($config), 看这个

$this->app['auth']->createUserProvider($config['provider'] ?? null) 这个返回的用户privier
PasswordBroker看这个类


绕了一大圈 是这个方法


看上去 每次发送重置令牌之前 先删除 旧的重置令牌 然后 重新生成一个 然后再发

这个是消息通知



哈哈 我发现laravel的代码 就是走着走着 会迷路

回到发送代码 处理响应
发送的逻辑的差不多 就这样了....

浙公网安备 33010602011771号