Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel-验证,未记录路由_Php_Laravel_Authentication - Fatal编程技术网

Php Laravel-验证,未记录路由

Php Laravel-验证,未记录路由,php,laravel,authentication,Php,Laravel,Authentication,登录成功后,route调用Controller方法时出现问题。 在新方法中,用户似乎没有被记录。 我不明白为什么 步骤是:使用 Route::post('login', 'UserController@login')->name('login'); 然后检查用户是否登录了: Route::get('check-login', 'UserController@checklogged'); 控制器是这个: <?php namespace App\Http\Controllers;

登录成功后,route调用Controller方法时出现问题。 在新方法中,用户似乎没有被记录。 我不明白为什么

步骤是:使用

Route::post('login', 'UserController@login')->name('login');
然后检查用户是否登录了:

Route::get('check-login', 'UserController@checklogged');
控制器是这个:

<?php

namespace App\Http\Controllers;

use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Validator;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Faker\Generator as Faker;

class UserController extends Controller
{
  // regole per FormValidator
  protected $rulesLogin = [
    'email' => 'bail|required|email',
    'password' => 'required',
  ];



  // Effettuo il login
  /**
   *  Method: POST
   * @Parameters: email, password
   * return: Authenticated User.
   */
  public function login(Request $request)
  {
    //dd($request->all());

    $validator = Validator::make($request->all(),$this->rulesLogin);

    // login fallito
    if ($validator->failed()) {
      return response([
        'status' => 'ko',
        'message' => $validator->errors()->first(),
      ], 422);
    }

    // login errato
    if (!Auth::attempt([
      'email' => $request->email,
      'password' => $request->password,
      'status' => ['active'],
    ])) {
      return response(
        [
          'status' => 'ko',
          'message' => 'Invalid email or password',
        ], 422);
    }

    return (Auth::user());
  }

  public function checklogged()
  {
    return dd(Auth::id());
  }

checklogged返回总是false。我希望它返回一个用户登录的Id,我想问题是你没有使用web中间件。如果你遵循HMVC模式,一定要像这样使用web中间件

    Route::group([
        'middleware' => ['web'],

    ], function () {

    });
或者,请检查您的RouteServiceProvider.php文件是否在mapWebRoutes函数中包含web中间件

   protected function mapWebRoutes()
    {
        Route::middleware('web')
             ->namespace($this->namespace)
             ->group(base_path('routes/web.php'));
    }
试试这个:

public function checklogged()
  {
    return dd(Auth::user()->id);
  }

问题是作为客人的中间件

Route::post('login', 'UserController@login')->name('login')->middleware('guest');