Laravel 5.2:限制访客和身份验证的路线

时间:2017-01-07 11:14:58

标签: php laravel laravel-5.2

我想让访客访问此路线:

Route::group(['middleware' => ['guest']], function () {
    Route::get('explore', 'FormController@formsList');
});

但我也希望艺术家可以访问此路线而不是labels

Route::group(['middleware' => 'auth'],function()
{

    Route::group(['middleware' => 'isLabel'],function()
    {

    });

    Route::group(['middleware' => 'isArtist'],function()
    {
        Route::get('explore', 'FormController@formsList');
    });

});

问题是guests无法访问路线,但artists可以,而且这不是我想要的。

标签中间件

public function handle($request, Closure $next)
    {
        if (!Auth::guest() && Auth::user()->type->idtype ===1) {
            return $next($request);

        }
        return redirect('/');

    }

艺术家中间件

public function handle($request, Closure $next)
    {
        if (!Auth::guest() && Auth::user()->type->idtype ===2) {
            return $next($request);

        }
        return redirect('/');

    }

1 个答案:

答案 0 :(得分:2)

你不能定义"或者将路线分组两次。这就是您当前代码不起作用的原因

我建议您创建一个名为ArtistAndGuestMiddleware的新中间件,您可以在其中定义来宾和艺术家可以通过。

public function handle($request, Closure $next)
    {
        if (Auth::guest() || Auth::user()->type->idtype ===2 ) {
            return $next($request);

        }
        return redirect('/');

    }