Laravel: класс аутентификации после входа не работает - PullRequest
1 голос
/ 25 июня 2019

Я использую Laravel 5.7.Я застрял на одном.После перенаправления на следующую страницу я не могу получить авторизованные пользовательские свойства.Auth::user()->id возвращает мне ошибку получения неизвестного свойства undefined.

Auth::check() также возвращает мне false.Я проверил много вопросов по стеку и другим платформам, но ни один из них не решил мою проблему.

Вот что я пробовал до сих пор: View:

<form method="POST" action="">
    @csrf
    <div class="form-group {{ $errors->has('email') ? ' has-error' : '' }}">
        <label>{{ __('lang.email_address') }}</label>
        <input type="email" name="email" value="{{ old('email') }}" class="form-control" placeholder="{{ __('lang.email') }}">
        @if ($errors->has('email'))
            <span class="help-block">
                <strong>{{ $errors->first('email') }}</strong>
            </span>
            @endif  
    </div>
    <div class="form-group {{ $errors->has('password') ? ' has-error' : '' }}">
        <label>{{ __('lang.password') }}</label> 
        <input type="password" name="password" class="form-control" placeholder="{{ __('lang.password') }}">
        @if ($errors->has('password'))
            <span class="help-block">
                <strong>{{ $errors->first('password') }}</strong>
            </span>
            @endif  

    <div class="checkbox">
        <label>
        <input type="checkbox" name="remember_me" > {{ __('lang.remember_me') }}
        </label>
    </div>
    <button type="submit" class="btn btn-warning btn-flat m-b-30 m-t-30 bg-login"> {{ __('lang.sign_in') }}</button>
    <hr/>
    <div class="register-link m-t-15 text-center">
        <p>
            {{ __('lang.forgot_your_password') }} <a href="{{Url('admin/forget-password')}}">  {{ __('lang.click_to_reset') }}</a>
        </p>
    </div>
</form>

controller:

public function postLogin(Request $request) {
     $validator = validator($request->all(),[
        'email'=>'required|email',
        'password'=>'required'
    ]);
     if($validator->fails()) {
         return Redirect::back()->withInput()->withErrors($validator);
     }
     $user = User::where('role_id', User::ROLE_ADMIN)->where('email', $request->input('email'))->first();
     if(!empty($user)){
        $userdata = array(
            'email'=>$request->input('email'),
            'password'=>$request->input('password')
        );
        if(Auth::attempt($userdata)) {
            return redirect('/admin')->with('success', trans('lang.login_success'));
        } else {
            return redirect('/admin/login')->withInput()->with('error', trans('lang.incorrect_email_password'));
        }
     }else{
         return redirect('/admin/login')->with('error',trans('lang.you_are_not_allowed_action'));
     }
}

Я перенаправляю на страницу администратора, но выдает ошибку класса Auth.

Ответы [ 3 ]

1 голос
/ 25 июня 2019

вы не определили класс Auth в вашем контроллере. определите это так:

<?php 
namespace App\Http\Controllers;
use Auth;
0 голосов
/ 25 июня 2019

Возможно, у вас проблемы с классом Auth, поэтому попробуйте использовать один из этих кодов

\Auth::check()

\Auth::user()->id

или

auth()->check()

auth()->user()->id


0 голосов
/ 25 июня 2019

Вам нужно определить использование Auth в верхней части контроллера следующим образом:

<?php

namespace App\Http\Controllers;

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