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的代码 就是走着走着 会迷路
回到发送代码 处理响应
发送的逻辑的差不多 就这样了....