简体   繁体   English

Laravel - 验证,未记录路由

[英]Laravel - Auth, route is not logged

I've a problem when route call a method of Controller after login successfull.登录成功后路由调用 Controller 方法时出现问题。
In the new method user seems to be not logged.在新方法中,用户似乎没有登录。 I can't understand why.我不明白为什么。

Steps are: Log-in with步骤是: 登录

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

and than check if user is logged with:然后检查用户是否登录:

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

Controller is this one: Controller 是这个:

<?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() return always false. checklogged() 总是返回 false。 I expect it return a user logged Id我希望它返回一个用户记录的 ID

I think the problem is u havent used web midlleware in route.If you are following HMVC pattern make sure to use web middleware like this.我认为问题是你没有在路由中使用 web 中间件。如果你遵循 HMVC 模式,请确保使用 web 中间件。

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

    ], function () {

    });

or please check your RouteServiceProvider.php file weather it has web middleware in mapWebRoutes() function或者请检查您的 RouteServiceProvider.php 文件天气它在 mapWebRoutes() function 中有 web 中间件

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

problem was middleware as guest.问题是作为客人的中间件。

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

Try this sintaxe:试试这个sintaxe:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM