鍍金池/ 問答/PHP/ laravel5.4自帶的用戶認(rèn)證如何在注冊(cè)前執(zhí)行中間件?謝謝大家~

laravel5.4自帶的用戶認(rèn)證如何在注冊(cè)前執(zhí)行中間件?謝謝大家~

我的問題是這樣的,現(xiàn)在呢我用的laravel自帶的用戶認(rèn)證因?yàn)楫吘狗矫?現(xiàn)在碰到個(gè)問題,就是碰到一些用戶惡意注冊(cè),我想在新用戶注冊(cè)提交前執(zhí)行一個(gè)判斷代碼,請(qǐng)問怎么個(gè)思路,謝謝大家~

回答
編輯回答
念初

像上面說的自定義中間件后,在App\Http\Controllers\Auth\RegisterController里的構(gòu)造函數(shù)中

/**
 * Create a new controller instance.
 *
 * @return void
 */
public function __construct()
{
    $this->middleware('guest');
    $this->middleware('checkIp');
}
2017年4月28日 09:57
編輯回答
放開她

可以使用自定義中間件來解決。

運(yùn)行Artisan 命令 make:middleware 創(chuàng)建新的中間件:
php artisan make:middleware CheckIpIsRegistered

<?php

namespace App\Http\Middleware;

use Closure;

class CheckIpIsRegistered
{
    /**
     * 處理傳入的請(qǐng)求
     *
     * @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 注冊(cè)中間件:

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');
2017年8月4日 04:09
編輯回答
乖乖噠

感謝以上幾位解答

2017年1月7日 22:35
編輯回答
半心人

我的產(chǎn)品是把注冊(cè)用戶跟印證用戶分開。必須要電子郵件作為注冊(cè)的一部分。然后我會(huì)發(fā)送一封印證郵件到該郵箱,只要用戶在3天之內(nèi)點(diǎn)擊了這個(gè)印證鏈接,我就將用戶從【注冊(cè)用戶】升級(jí)成為【印證用戶】然后在權(quán)限上對(duì)2中用戶做了處理。這樣又不會(huì)失去真實(shí)用戶注冊(cè)體驗(yàn),也會(huì)屏蔽掉一些搗亂分子。

2017年11月15日 18:01