我的问题是这样的,现在呢我用的laravel自带的用户认证因为毕竟方面,现在碰到个问题,就是碰到一些用户恶意注册,我想在新用户注册提交前执行一个判断代码,请问怎么个思路,谢谢大家~
4 回答
![?](http://img1.sycdn.imooc.com/545861b80001d27c02200220-100-100.jpg)
皈依舞
TA贡献1851条经验 获得超3个赞
可以使用自定义中间件来解决。
运行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');
![?](http://img1.sycdn.imooc.com/54584cde0001d19202200220-100-100.jpg)
四季花海
TA贡献1811条经验 获得超5个赞
像上面说的自定义中间件后,在App\Http\Controllers\Auth\RegisterController
里的构造函数中
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('guest');
$this->middleware('checkIp');
}
![?](http://img1.sycdn.imooc.com/533e50ed0001cc5b02000200-100-100.jpg)
慕尼黑的夜晚无繁华
TA贡献1864条经验 获得超6个赞
我的产品是把注册用户跟印证用户分开。必须要电子邮件作为注册的一部分。然后我会发送一封印证邮件到该邮箱,只要用户在3天之内点击了这个印证链接,我就将用户从【注册用户】升级成为【印证用户】然后在权限上对2中用户做了处理。这样又不会失去真实用户注册体验,也会屏蔽掉一些捣乱分子。
- 4 回答
- 0 关注
- 514 浏览
添加回答
举报
0/150
提交
取消