Auth :: user () возвращает нулевое значение - PullRequest
0 голосов
/ 17 апреля 2019

Я работаю над аутентификацией имени пользователя. Я думал, что мой LoginController работает отлично. Но когда я захожу на страницу и делаю вход в систему. Страница останется на странице входа. Я проверил свой код, когда я использую dd (Auth :: user ()) в моем HomeController. он всегда возвращает нулевое значение.

Я прочитал некоторые обсуждения на stackoverflow. Люди сказали, что я должен использовать это в конструкторе loginController.

    $this->middleare(function($request,$next){
        $this->user=Auth::user();
        return $next($request)
    })

но это не работает в моем проекте.

Я уверен, что единственная причина, по которой моя страница входа не может перенаправить на следующую страницу, заключается в том, что Auth :: user () имеет нулевое значение. Но я не знаю, как это исправить.

Может кто-нибудь мне помочь ??

LoginController.php

<?php

namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
use App\User;

use Illuminate\Support\Facades\Auth;
use App\Http\Controllers\Auth\Validator;

class LoginController extends Controller
{


    use AuthenticatesUsers;


    protected $redirectTo = '/index';

    public function __construct()
    {
        $this->middleware('guest')->except('logout');
    }

    protected function authenticated(Request $request)
    {
        if (Auth::attempt(['username' => $request['username'], 'password' => $request['password']])) {

            return redirect('/');
        }
    }
    public function username()
    {
        return 'username';
    }
    protected function validateLogin(Request $request)
    {
        /*$this->validate($request, [
            "user_name" => 'required', 'user_password' => 'required',
        ]);*/
        $messages = [
            'username.required' => 'Username harus diisi',
            'username.unique' => 'Username sudah ada',
            'password.required' => 'Tolong isi password terlebih dahulu',
            'password.min' => 'Password harus diisi minimal 6 karakter.'
        ];
        return $this->validate($request, [
            'username' => ['required', 'string', 'max:150'],
            'password' => ['required', 'string', 'min:6'],
        ], $messages);
    }
}


HomeController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;

class HomeController extends Controller
{
    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        dd(Auth::user()); //this return false
        $this->middleware('auth');
    }

    /**
     * Show the application dashboard.
     *
     * @return \Illuminate\Contracts\Support\Renderable
     */
    public function index()
    {
        return view('home');
    }
}

1 Ответ

0 голосов
/ 17 апреля 2019

вы не можете получить доступ к сеансу или аутентифицированному пользователю в конструкторе вашего контроллера, потому что промежуточное ПО еще не запущено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...