前言
本文主要给大家介绍了通过修改Laravel Auth用salt和password进行认证用户的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍:
Laraval自带的用户认证系统Auth非常强大易用,不过在Laravel的用户认证系统中用户注册、登录、找回密码这些模块中用到密码加密和认证算法时使用的都是bcrypt,而很多之前做的项目用户表里都是采用存储salt + password加密字符串的方式来记录用户的密码的,这就给使用Laravel框架来重构之前的项目带来了很大的阻力,不过最近自己通过在网上找资料、看社区论坛、看源码等方式完成了对Laravel Auth的修改,在这里分享出来希望能对其他人有所帮助。 开篇之前需要再说明下如果是新项目应用Laravel框架,那么不需要对Auth进行任何修改,默认的bcrypt加密算法是比salt + password更安全更高效的加密算法。
修改用户注册
首先,在laravel 里启用验证是用的artisan命令
php artisan make:auth
执行完命令后在routes文件(位置:app/Http/routes.php)会多一条静态方法调用
Route::auth();
这个Route是Laravel的一个Facade (位于Illuminate/Support/Facades/Route), 调用的auth方法定义在Illuminate/Routing/Router类里, 如下可以看到auth方法里就是定义了一些Auth相关的路由规则
/** * Register the typical authentication routes for an application. * * @return void */public function auth(){ // Authentication Routes... $this->get('login', 'Auth/AuthController@showLoginForm'); $this->post('login', 'Auth/AuthController@login'); $this->get('logout', 'Auth/AuthController@logout'); // Registration Routes... $this->get('register', 'Auth/AuthController@showRegistrationForm'); $this->post('register', 'Auth/AuthController@register'); // Password Reset Routes... $this->get('password/reset/{token?}', 'Auth/PasswordController@showResetForm'); $this->post('password/email', 'Auth/PasswordController@sendResetLinkEmail'); $this->post('password/reset', 'Auth/PasswordController@reset');}
通过路由规则可以看到注册时请求的控制器方法是AuthController的register方法, 该方法定义在/Illuminate/Foundation/Auth/RegistersUsers这个traits里,AuthController在类定义里引入了这个traits.
/** * Handle a registration request for the application. * * @param /Illuminate/Http/Request $request * @return /Illuminate/Http/Response */public function register(Request $request){ $validator = $this->validator($request->all()); if ($validator->fails()) { $this->throwValidationException( $request, $validator ); } Auth::guard($this->getGuard())->login($this->create($request->all())); return redirect($this->redirectPath());}
新闻热点
疑难解答