Laravel Auth ::尝试302找到

时间:2018-02-20 06:51:39

标签: php laravel authentication laravel-5

我是Laravel的新手。我试图写一个登录示例,但它显示" 302 Found"错误。

web.php(路线文件):

 Route::post('login', array(
   'uses' => 'UserController@doLogin'
 ));

 Route::get('logout', array('uses' => 'UserController@doLogout'));

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

  Route::get('/form', function () {
     return view('form');
  });

  Route::get('/createUser', function () {
     return view('users');
  }); 

   Route::get('logout', array(
    'uses' => 'UserController@doLogout'
   ));

});

" doLogin"功能代码位于UserController中:

public function doLogin()
{

 $rules = array(
    'name'    => 'required', // make sure the email is an actual email
    'password' => 'required|alphaNum|min:3' // password can only be alphanumeric and has to be greater than 3 characters
 ); 

 $validator = Validator::make(Input::all(), $rules);

  if ($validator->fails()) {
        return Redirect::to('login')
            ->withErrors($validator) // send back all errors to the login form
            ->withInput(Input::except('password')); // send back the input (not the password) so that we can repopulate the form
  } 
  else {

        // create our user data for the authentication
        $userdata = array(
            'name'     => Input::get('name'),
            'password'  => Input::get('password')
        );

         $auth = DB::table('users')->where('name', '=', Input::get('name'))->where('password', '=', Input::get('password'))->get()->first();


        // attempt to do the login
        if (Auth::attempt($userdata)) {

            // validation successful!
            // redirect them to the secure section or whatever
            // return Redirect::to('secure');
            // for now we'll just echo success (even though echoing in a controller is bad)
            echo 'SUCCESS!';

        } else {        

            // validation not successful, send back to form 
            return Redirect::to('login');

        }

  }

}

登录表单

<html>
 <head>
    <title>LOGIN</title>
 </head>
 <body>
 <form action="{{ route('login') }}" method="POST">
    <input type="hidden" name="_token" value="{{ csrf_token() }}">
     <input type="text" name="name"><br/><br/>
    <input type="text" name="surname"><br/><br/>
     <input type="submit" value="LOGIN">
   </form>
 </body>
 </html>

当我查看来自网络状态代码的登录请求时出现&#34; 302 Found&#34;。当我尝试使用 $ auth 而不是&#34; Auth :: attempt($ userdata)&#34; 仍然显示相同的错误。也许它与另一个原因有关。 我怎么能找出错误的? 提前谢谢。

3 个答案:

答案 0 :(得分:0)

您收到此错误的原因是您正在使用route()辅助函数,该函数按名称选择路由,并且您没有与/login路由关联的任何名称。

您可以通过两种方式实现这一目标。

要么你必须改变

Route::post('login', array(
  'as' => 'login',
  'uses' => 'UserController@doLogin'
 ));

<强> OR

 action="{{ url('login') }}"

希望这有帮助

答案 1 :(得分:0)

此错误的可能原因是登录凭据未通过请求发送(使用chrome网络检查器确认已发送),或者该凭据电子邮件/密码的db表缺少字段或其他内容。在这两种情况下,Laravel都使用代码302进行重定向。

要在树枝中和并行中调试更深的@dump($ errors),请打开日志记录和监视日志。

答案 2 :(得分:0)

还要检查并确保已设置@function _construct的中间件为auth,而不是guest