【发布时间】:2016-05-12 15:35:20
【问题描述】:
我正在尝试使用 'auth' 和 'auth.admin' 中间件过滤路由,这应该类似于 laravel 4.2 的 Route::filter。但它不起作用。 这是我的路线
Route::group(['prefix' => 'admin', 'middleware' => ['auth', 'auth.admin']], function()
{
// ...
});
内核.php
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'auth.admin' => \App\Http\Middleware\RedirectIfAdmin::class,
'role' => Zizaco\Entrust\Middleware\EntrustRole::class,
'permission' => Zizaco\Entrust\Middleware\EntrustPermission::class,
'ability' => Zizaco\Entrust\Middleware\EntrustAbility::class,
];
RedirectIfAdmin.php
<?php
namespace App\Http\Middleware;
use Closure;
use Entrust;
class RedirectIfAdmin
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if (!Entrust::hasRole(config('customConfig.roles.admin'))) {
return redirect()->route('dashboard')
->with('error', 'Access Denied');
}
return $next($request);
}
}
【问题讨论】:
-
你遇到了什么问题,有什么错误吗?
-
重定向循环问题
-
你能告诉我你的路线('dashboard')指向哪里吗?
-
Route::get('dashboard', array('as' => 'dashboard', 'uses' => 'Auth\AuthController@dashboard'));并返回 view('dashboard') ->with('title','Dashboard')
-
我在成功尝试后使用了这个 return redirect()->intended('dashboard');
标签: php laravel-5.1 middleware entrust