以下是我的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');
答案 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');
});
注意:从全局中间件(
中删除authKernel.php
)