Laravel 5 Laravel路由组中间件问题
我在中间件身份验证组中保留了一些laravel路由,如下所示:Laravel 5 Laravel路由组中间件问题,laravel-5,laravel-routing,Laravel 5,Laravel Routing,我在中间件身份验证组中保留了一些laravel路由,如下所示: Route::group(['middleware'=>'auth'],function(){ Route::controller('Activities', 'ActivitiesController'); Route::get('foo','FooController@getFoo'); ..... }); 当我尝试登录访问这些页面时,我无法登录,url会一次又一次地重定向到登录页面。但如果我将
Route::group(['middleware'=>'auth'],function(){
Route::controller('Activities', 'ActivitiesController');
Route::get('foo','FooController@getFoo');
.....
});
当我尝试登录访问这些页面时,我无法登录,url会一次又一次地重定向到登录页面。但如果我将构造函数用作:
public function __construct()
{
$this->middleware('auth');
}
在这些控制器中,它工作得非常好。什么是路线组问题?这对我来说很有效,在路线中
Route::group(['middleware'=>'auth'],function(){
Route::controller('activities', 'ActivitiesController');
});
然后控制器
<?php namespace App\Http\Controllers;
class ActivitiesController extends Controller {
public function getIndex() {
return 'you are in;
}
}
这对我很有效,在途中
Route::group(['middleware'=>'auth'],function(){
Route::controller('activities', 'ActivitiesController');
});
然后控制器
<?php namespace App\Http\Controllers;
class ActivitiesController extends Controller {
public function getIndex() {
return 'you are in;
}
}
路由有一个::中间件
类,您可以使用该类:
Routes>web.php
Route::middleware(['auth'])->group(function(){
Route::get('/activities', 'ActivitiesController@index');
});
您还可以使用Route::resource()代码>我更喜欢哪个。如果您不知道它是做什么的,这里有一些文档:路由有一个::中间件可以使用:
Routes>web.php
Route::middleware(['auth'])->group(function(){
Route::get('/activities', 'ActivitiesController@index');
});
您还可以使用Route::resource()代码>我更喜欢哪个。如果您不知道它的作用,以下是web.php中的文档::
$roleGeneral = role1.'~'.role2.'~'.role3.'~'.role4;
Route::group(['middleware' => ['permission.role:'.$roleGeneral]], function() {})
在Kernel.php中:
protected $routeMiddleware = [...,
'permission.role' => \App\Http\Middleware\CheckPermission::class,
];
在CheckPermission.php中:
public function handle($request, Closure $next, $role)
{
$roleArr = explode('~', $role);
$token = JWTAuth::getToken();
$user = JWTAuth::toUser($token);
$roleLogin = SysRoleModel::where('id', $user->role_id)->first();
if (in_array($roleLogin['name'], $roleArr)){
return $next($request);
}else{
return \Redirect::back()->withMessage('You are not authorized to access!');
}
}
在web.php中:
$roleGeneral = role1.'~'.role2.'~'.role3.'~'.role4;
Route::group(['middleware' => ['permission.role:'.$roleGeneral]], function() {})
在Kernel.php中:
protected $routeMiddleware = [...,
'permission.role' => \App\Http\Middleware\CheckPermission::class,
];
在CheckPermission.php中:
public function handle($request, Closure $next, $role)
{
$roleArr = explode('~', $role);
$token = JWTAuth::getToken();
$user = JWTAuth::toUser($token);
$roleLogin = SysRoleModel::where('id', $user->role_id)->first();
if (in_array($roleLogin['name'], $roleArr)){
return $next($request);
}else{
return \Redirect::back()->withMessage('You are not authorized to access!');
}
}
在Activities Controller或FooController构造函数中是否有中间件?就像guest中间件一样?你是否修改了app/http/middleware/Authenticate?没有。我保留了对我有效的身份验证,在routeroute::group(['middleware'=>'auth'],function(){route::controller('activities','ActivitiesController');})中代码>然后控制器<代码>谢谢问题解决了。活动控制器或FooController构造函数中是否有中间件?就像guest中间件一样?你是否修改了app/http/middleware/Authenticate?没有。我保留了对我有效的身份验证,在routeroute::group(['middleware'=>'auth'],function(){route::controller('activities','ActivitiesController');})中代码>然后控制器<代码>感谢问题已解决。首先,Route::controller已被弃用,将在5.3(6月)中删除。(见反对意见)。其次,我有一个非常类似的情况,我在一个路由组中声明了我的中间件,它只是跳过它。有什么想法吗?谢谢你给我指点那些反对意见。关于你的类似问题,你能提出一个新的问题吗。请在第一次关闭时给我链接,Route::controller已被弃用,将在5.3(6月)中删除。(见反对意见)。其次,我有一个非常类似的情况,我在一个路由组中声明了我的中间件,它只是跳过它。有什么想法吗?谢谢你给我指点那些反对意见。关于你的类似问题,你能提出一个新的问题吗。你这样做的时候一定要给我链接