猿问

laravel5.4自带的用户认证如何在注册前执行中间件?谢谢大家~

我的问题是这样的,现在呢我用的laravel自带的用户认证因为毕竟方面,现在碰到个问题,就是碰到一些用户恶意注册,我想在新用户注册提交前执行一个判断代码,请问怎么个思路,谢谢大家~

慕沐林林
浏览 515回答 4
4回答

皈依舞

可以使用自定义中间件来解决。 运行Artisan 命令 make:middleware 创建新的中间件:php artisan make:middleware CheckIpIsRegistered <?php namespace App\Http\Middleware; use Closure; class CheckIpIsRegistered { /** * 处理传入的请求 * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { if (false) { //添加的你逻辑 return redirect('home'); } return $next($request); } } 再 app/Http/Kernel.php 注册中间件: protected $routeMiddleware = [ 'auth' => \Illuminate\Auth\Middleware\Authenticate::class, 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, 'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class, 'can' => \Illuminate\Auth\Middleware\Authorize::class, 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, 'checkip' => CheckIpIsRegistered::class, ]; 添加中间件到路由 Route::post('user/register', function () { // })->middleware('checkip');

四季花海

像上面说的自定义中间件后,在App\Http\Controllers\Auth\RegisterController里的构造函数中 /** * Create a new controller instance. * * @return void */ public function __construct() { $this->middleware('guest'); $this->middleware('checkIp'); }

慕尼黑的夜晚无繁华

我的产品是把注册用户跟印证用户分开。必须要电子邮件作为注册的一部分。然后我会发送一封印证邮件到该邮箱,只要用户在3天之内点击了这个印证链接,我就将用户从【注册用户】升级成为【印证用户】然后在权限上对2中用户做了处理。这样又不会失去真实用户注册体验,也会屏蔽掉一些捣乱分子。

动漫人物

感谢以上几位解答
随时随地看视频慕课网APP
我要回答