如何使网址未经授权 - laravel

时间:2018-03-20 17:23:45

标签: php laravel

以下是我的authenticate.php,阻止访客登录我的系统。但有一条路线我希望公开给我的访客/访客以便能够访问。我怎样才能将其从auth中豁免。

目前authenticate.php中的功能似乎保护了我的整个路线。

这是我要公开的路线Route::get('/survey/{survey}', 'SurveyController@detail_survey')->name('detail.survey'); 我该如何实现这一目标?

Authenticate.php

    public function handle($request, Closure $next, $guard = null)
    {
        if (Auth::guard($guard)->guest()) {
            if ($request->ajax() || $request->wantsJson()) {
                return response('Unauthorized.', 401);
            }

            return redirect()->guest('login');
        }

        return $next($request);
    }
}

routes.php文件

Route::get('/', 'SurveyController@home');
Route::get('/survey/new', 'SurveyController@new_survey')->name('new.survey');
Route::get('/survey/{survey}', 'SurveyController@detail_survey')->name('detail.survey');

2 个答案:

答案 0 :(得分:1)

首先,您需要找到注册身份验证逻辑的位置。通常,您可以在{$ 1}}下的Variable $ middlewareGroups和密钥:'web'中找到它(假设您正在使用laravel提供的web.php路由文件)。但是,它应该在变量$ routeMiddleware中有一个键,如下所示:

app\controllers\middleware\kernel.php

否则您可能已经在其他地方注册了它,可能是通过['Authenticate' => yourMiddlewareClass::class], 中的服务提供商。 当您取消逻辑时,您应该能够在config\app.php路径文件中使用此结构:

web.php

答案 1 :(得分:1)

在routes.php中您可以对使用auth中间件进行身份验证的组进行分组。 同时将非认证路由放在该组之外。

Route::get('visitors/guests', 'someController@guestsHandler');

Route::group(['middleware' => 'auth'], function() {
  Route::get('/survey/new', 'SurveyController@new_survey')->name('new.survey');
  Route::get('/survey/{survey}', 'SurveyController@detail_survey')->name('detail.survey');
});
  

注意:从全局中间件(Kernel.php

中删除auth