php – Laravel 5.2 – 使用Auth :: check()在MIddleware中不起
发布时间:2020-12-14 19:42:43 所属栏目:大数据 来源:网络整理
导读:我正在尝试为我的Laravel 5.2应用程序中的不同类型的用户制作中间件. 所以,我正在做的是为不同的用户制作不同的中间件. 据我所知,Auth :: check()如果没有从here开始调试中间件网络将无法工作. 所以,我所做的是 – routes.php文件 Route::group(['middleware
我正在尝试为我的Laravel 5.2应用程序中的不同类型的用户制作中间件.
所以,我正在做的是为不同的用户制作不同的中间件. 据我所知,Auth :: check()如果没有从here开始调试中间件网络将无法工作. 所以,我所做的是 – routes.php文件 Route::group(['middleware' => ['web','admin']],function () { //suspend,activate,delete Route::get('users',[ 'uses' => 'AdminController@users','as' => 'users' ]); //Edit,suspend,delete Route::get('articles',[ 'uses' => 'AdminController@articles','as' => 'articles' ]); }); AdminMiddleware.php <?php namespace AppHttpMiddleware; use Closure; use Auth; class AdminMiddleware { /** * Handle an incoming request. * * @param IlluminateHttpRequest $request * @param Closure $next * @return mixed */ public function handle($request,Closure $next) { if (Auth::check()) { return "asd"; //return Auth::user(); //return redirect('home'); } else { return redirect('login'); } //now return the valid request return $next($request); } } Kernel.php protected $routeMiddleware = [ 'auth' => AppHttpMiddlewareAuthenticate::class,'admin' => AppHttpMiddlewareAdminMiddleware::class,'user' => AppHttpMiddlewareUserMiddleware::class,'auth.basic' => IlluminateAuthMiddlewareAuthenticateWithBasicAuth::class,'guest' => AppHttpMiddlewareRedirectIfAuthenticated::class,'throttle' => IlluminateRoutingMiddlewareThrottleRequests::class,]; AdminController.php <?php namespace AppHttpControllers; use IlluminateHttpRequest; use AppHttpRequests; use AppHttpControllersController; class AdminController extends Controller { public function users() { return view('admin.users'); } public function articles() { return view('admin.articles'); } } 但我得到这个错误 – 当“返回Auth :: user();”时称为中间件,“返回Auth :: user();”正在其他地方工作(视图和控制器),但不像老版本的Laravel一样工作. 有人可以帮忙吗? 解决方法
您可以做这样的事情,根据需要进行调整
public function handle($request,Closure $next) { $user = $request->user(); if (! $user || $user->user_type != 'admin') { return redirect('login'); } return $next($request); } 您收到的错误来自于您没有从中间件返回Response对象这一事实. VerifyCsrfToken中间件正在尝试将cookie添加到通过管道传递请求所获得的响应中.在这种情况下,它不是获取Response对象而是获取字符串或User,因为在中间件中返回了字符串或User. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |