Laravel - Auth, маршрут не логируется - PullRequest
1 голос
/ 27 мая 2020

У меня проблема, когда маршрут вызывает метод контроллера после успешного входа в систему.
В новом методе пользователь, похоже, не вошел в систему. Я не могу понять почему.

Шаги: Войдите в систему с помощью

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

, а затем проверьте, вошел ли пользователь с помощью:

Route::get('check-login', 'UserController@checklogged');

Контроллер это one:

<?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. Я ожидаю, что он вернет зарегистрированный пользователем идентификатор

Ответы [ 3 ]

0 голосов
/ 27 мая 2020

Попробуйте этот синтаксис:

public function checklogged()
  {
    return dd(Auth::user()->id);
  }
0 голосов
/ 27 мая 2020

проблема заключалась в промежуточном программном обеспечении в качестве гостя.

Route::post('login', 'UserController@login')->name('login')->middleware('guest');
0 голосов
/ 27 мая 2020

Я думаю, проблема в том, что вы не использовали промежуточное веб-ПО в маршруте. Если вы следуете шаблону H MVC, убедитесь, что используете такое промежуточное веб-программное обеспечение.

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

    ], function () {

    });

или проверьте свой RouteServiceProvider. php файл с веб-промежуточным ПО в функции mapWebRoutes ()

   protected function mapWebRoutes()
    {
        Route::middleware('web')
             ->namespace($this->namespace)
             ->group(base_path('routes/web.php'));
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...