gpt4 book ai didi

php - 中间件影响数据库中插入的绑定(bind)

转载 作者:搜寻专家 更新时间:2023-10-31 21:52:33 26 4
gpt4 key购买 nike

我的 Laravel 应用程序有问题。

我想在路由上添加用于排名控制的中间件。

当我将我的自定义中间件添加到我的路由组时,SQL 语句的绑定(bind)是双重的。

当我取消自定义中间件时,它工作正常。

我真的不明白为什么。

这是我的 AuthRank.php :

class AuthRank {

public function handle($request, Closure $next, $rank)
{
$response = $next($request);

$user = Auth::user();

if(!$user || $user->rank < $rank)
{
return redirect('/');
}

return $next($request);
}}

这是我的 Kernel.php :

protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\Adldap\Laravel\Middleware\WindowsAuthenticate::class, // Inserted here.
],
'api' => [
'throttle:60,1',
],
];

/**
* The application's route middleware.
*
* These middleware may be assigned to groups or used individually.
*
* @var array
*/
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'can' => \Illuminate\Foundation\Http\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'auth.rank' => \App\Http\Middleware\AuthRank::class,
];

还有我的 Routes.php 的摘录:

 Route::group(['prefix' => 'GestionUtilisateurs','middleware' =>'auth.rank:99'], function () 
{
Route::post('/copy', ['uses' => 'userController@copyUser']);
});

自定义中间件问题的结果:

Statement : insert into MY_TABLE (DATE, USER_ID, ROLE_ID) values (:p0, :p1, :p2) Bindings : [2016/08/09,2016/08/09,1,1,99,99]

没有我的自定义中间件它返回我:

Statement : insert into MY_TABLE (DATE, USER_ID, ROLE_ID) values (:p0, :p1, :p2) Bindings : [2016/08/09,1,99]

这很好

我知道“web”中间件,它默认在

app/providers/RouteServiceProvider.php

但是当我删除它时,我的身份验证不起作用。

为什么它不适用于我的自定义中间件?

谢谢!

最佳答案

我没有看到任何可能影响您的查询的代码。我看到的是您的代码中似乎有错误:

class AuthRank {

public function handle($request, Closure $next, $rank)
{
// Isn't this repeated unnecessarily?
// $response = $next($request);

$user = Auth::user();

if(!$user || $user->rank < $rank) {
return redirect('/');
}

return $next($request);
}
}

尝试删除多余的代码。如果它不起作用,请提供更多详细信息,说明您是如何创建受影响的查询的,我们可能会提供更多帮助。

关于php - 中间件影响数据库中插入的绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38853929/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com