laravel自带登录验证代码跟踪

Author Avatar
yyq 2020-12-03 16:27:00
  • 二维码

laravel自带登录验证代码跟踪

        网上下载了一套lavalite的CMS系统,账户登录是laravel系统自带的验证模块,跟踪了下代码,记录下流程:

        

        NO1:从页面提交登录数据开始,账户使用的是email字段,密码使用的是password,数据提交到后端的路由,路由也找的费劲:

            \Illuminate\Routing\auth内的  $this->post('login', 'Auth\LoginController@login');


        NO2:进入Auth下的控制器LoginController,是木有login方法的,然后使用了php的trait方法(参见php的trait使用方法),调用的是AuthenticatesUsers.php内的login()方法,再调用其 attemptLogin()方法,该方法内的$this->guard()->attempt()将账户密码及记住密码状态等参数传到 Illuminate\Auth\SessionGuard.php内的attempt()方法


        NO3:attempt()内的关键代码

        $this->lastAttempted = $user = $this->provider->retrieveByCredentials($credentials);

        retrieveByCredentials方法为Illuminate\Auth\EloquentUserProvider.php内,传入参数账户密码后根据传入的账户获取账户的信息并返回

        $this->hasValidCredentials($user, $credentials)

        hasValidCredentials方法将调用Illuminate\Auth\EloquentUserProvider.php内的方法validateCredentials(),在这个方法内,laravel通过hash faced提供的bcrypt()加密方式将传入的密码与数据库存储密码对比,返回true OR false

        

        NO4:validateCredentials()方法内可以更改加密方式,如md5(),可以自行操作

        

上一篇 返回列表 下一篇

发表评论

Tips:评论内容请文明用语