我已经为我的平台上的每个用户生成了推荐代码,并且会使用Cookie来跟踪新用户是否通过其他人注册(也就是说他们被推荐)。
我可以生成一个网址,即http://localhost:8888/Test/public/?ref=111222333444
但是,当我使用代码注册为新用户时,cookie似乎没有存储并转换回我的数据库
我错过了什么?
<?php
namespace App\Http\Middleware;
use Illuminate\Http\Response;
use Closure;
class CheckReferral
{
public function handle($request, Closure $next)
{
if( $request->hasCookie('referral')) {
return $next($request);
}
else {
if( $request->query('ref') ) {
print "yes cookie detected";
return redirect($request->fullUrl())->withCookie(cookie()->forever('referral', $request->query('ref')));
}
}
return $next($request);
}
}
答案 0 :(得分:0)
好的,这是我的愚蠢错误 - 我忽略了将中间件添加到我的路线中。通过这样解决它:
use App\Http\Middleware\CheckReferral;
Route::get('/', function () {
return view('welcome');
})->middleware(CheckReferral::class);
答案 1 :(得分:0)
使用中间件的最佳方法是将其设置为Kernal
类,方法是将其设置为routeMiddleware
数组,例如
$routeMiddleware = [
'auth' => \Laravel\Http\Middleware\Authenticate::class,
'guest' => \Laravel\Http\Middleware\RedirectIfAuthenticated::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
...
'check-referral' => \Laravel\Http\Middleware\CheckReferral::class,
];
然后指定路线,例如
Route::get('/', function () {
//
})->middleware('check-referral');
希望这会有所帮助