我的laravel应用出现问题。
我想添加中间件来对路线进行等级控制。
当我将自定义的Middelware添加到我的路由组中时,SQL语句的绑定是双重的。
当我卸下自定义的中间件时,它就可以正常工作。
我真的不明白为什么。
有我的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']);
});
自定义中间件的问题结果:
语句:插入MY_TABLE(DATE,USER_ID,ROLE_ID)值(:p0,:p1,:p2)绑定:[2016/08 / 09,2016 / 08 / 09,1,1,99,99]
没有我的自定义中间件,它会返回我:
语句:插入MY_TABLE(DATE,USER_ID,ROLE_ID)值(:p0,:p1,:p2)绑定:[2016/08 / 09,1,99]
这很好
我知道默认情况下它是“网络”中间件
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);
}
}
尝试删除多余的代码。如果它不起作用,请提供更多有关如何创建受影响的查询的详细信息,我们可能会提供更多帮助。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句