2017-02-15 66 views
0

我在我的网站中有一个简单的表单,我想检查用户当前是否登录,然后才能发布表单。所以,我已经在该邮政路线上放置了认证中间件。像这个 -Laravel认证中间件不适用于邮政路线

Route::post('test','[email protected]_mid')->middleware('auth'); 

我的身份验证的中间件就像是这个 -

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

     return $next($request); 
    } 

这里'登录'重定向到我的登录页面。

的问题是我打的登录按钮后,它shows-

MethodNotAllowedHttpException in RouteCollection.php line 219: 
at RouteCollection->methodNotAllowed(array('POST')) in RouteCollection.php line 206 

我的HTML形式 -

{{Form::open(array('url'=>"/test"))}} 

<input type="submit" value="submit"> 

{{Form::close()}} 

但如果我设置了身份验证的中间件上GET route.It的工作很好。在GET的情况下,如果我注销,它会导致我登录页面,并且在我提供登录凭据并点击登录按钮后,它会将我导向所需的GE T路线。

回答

0

确保您的视图表单使用POST方法。

{{Form::open(array('url'=>'/test', 'method'=>'post'))}} 

请注意,除非指定,否则$guard变量默认为NULL。查看您的/config/auth.php配置可用的警卫。

Route::post('test', '[email protected]_mid')->middleware('auth:web'); 
+0

不工作@克里斯Cynarski –

+0

'卫士'=> [ '网络'=> [ '司机'=> '会话', '供应商'=> '用户', ], –

+0

其实警卫是默认情况下的网络。你确定你正在POST请求'/测试'路线吗?将您的HTML视图追加到问题中。 –