laravel客户认证
一键生成认证代码
$ php artisan make:auth
查看生成的代码:
image
在 routes/web.php
中新添加了以下两行:
Auth::routes();Route::get('/home', 'HomeController@index')->name('home');
Auth::routes()
是 Laravel 的客户认证路由,在 vendor/laravel/framework/src/Illuminate/Routing/Router.php
搜索 LoginController
可看到定义的具体路由:
// 客户身份验证相关的路由Route::get('login', 'Auth\LoginController@showLoginForm')->name('login');Route::post('login', 'Auth\LoginController@login');Route::post('logout', 'Auth\LoginController@logout')->name('logout');// 客户注册相关路由Route::get('register', 'Auth\RegisterController@showRegistrationForm')->name('register');Route::post('register', 'Auth\RegisterController@register');// 密码重置相关路由Route::get('password/reset', 'Auth\ForgotPasswordController@showLinkRequestForm')->name('password.request');Route::post('password/email', 'Auth\ForgotPasswordController@sendResetLinkEmail')->name('password.email');Route::get('password/reset/{token}', 'Auth\ResetPasswordController@showResetForm')->name('password.reset');Route::post('password/reset', 'Auth\ResetPasswordController@reset')->name('password.update');// Email 认证相关路由Route::get('email/verify', 'Auth\VerificationController@show')->name('verification.notice');Route::get('email/verify/{id}', 'Auth\VerificationController@verify')->name('verification.verify');Route::get('email/resend', 'Auth\VerificationController@resend')->name('verification.resend');
此外,生成了以下视图:
视图名称 | 说明 |
---|---|
register.blade.php | 注册页面视图 |
login.blade.php | 登录页面视图 |
verify.blade.php | 邮箱认证视图 |
passwords/email.blade.php | 提交邮箱发送邮件的视图 |
passwords/reset.blade.php | 重置密码的页面视图 |
客户注册流程
执行迁移生成客户表:
$ php artisan migrate
访问 http://test.com/register
注册客户,注册成功后会自动登录
在blade判断能否为登录状态:
@guest # 未登录客户@else # 已登录客户@endguest
生成验证码
使用 mewebstudio/captcha 生成验证码
$ composer require mews/captcha$ php artisan vendor:publish
image
验证码的使用分为两步:
前台展现 —— 生成验证码给客户展现,并收集客户输入的答案
后台验证 —— 接收答案,检测客户输入的验证码能否正确
在 resources/views/auth/register.blade.php
新添加:
<div class="form-group row"> <label for="captcha" class="col-md-4 col-form-label text-md-right">验证码</label> <div class="col-md-6"> <input id="captcha" class="form-control{{ $errors->has('captcha') ? ' is-invalid' : '' }}" name="captcha" required> <img class="thumbnail captcha mt-3 mb-2" src="{{ captcha_src('flat') }}" onclick="this.src='/captcha/flat?'+Math.random()" title="点击图片重新获取验证码"> @if ($errors->has('captcha')) <span class="invalid-feedback" role="alert"> <strong> {{ $errors->first('captcha') }} </strong> </span> @endif </div></div>
后台验证:
mews/captcha
是专门为 Laravel 量身定制的扩展包,能很好的兼容 Laravel 生成的注册逻辑。我们只要要在注册的时候,增加上表单验证规则就可:
app/Http/Controllers/Auth/RegisterController.php
protected function validator(array $data){ return Validator::make($data, [ 'name' => ['required', 'string', 'max:255'], 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], 'password' => ['required', 'string', 'min:6', 'confirmed'], 'captcha' => ['required', 'captcha'], # 第二个 captcha 是 mews/captcha 自己设置的表单验证规则 ], [ 'captcha.required' => '验证码不能为空', 'captcha.captcha' => '请输入正确的验证码', ]);}
说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » laravel客户认证
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » laravel客户认证