繁体   English   中英

Laravel:登录后的身份验证类不起作用

[英]Laravel: Auth class after login is not working

我正在使用 Laravel 5.7。 我坚持一件事。 重定向到下一页后,我无法获得登录的用户属性。 Auth::user()->id返回获取未定义的未知属性的错误。

Auth::check()也返回给我false 我在堆栈和其他平台上检查了很多问题,但没有一个能解决我的问题。

这是我迄今为止尝试过的:查看:

<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>

控制器:

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 类的错误。

您没有在控制器中定义 Auth 类。 像这样定义它:

<?php 
namespace App\Http\Controllers;
use Auth;

您需要像这样在控制器顶部定义 use Auth:

<?php

namespace App\Http\Controllers;

use Auth;
use Illuminate\Http\Request;

Auth 类可能有问题,因此请尝试使用以下代码之一

\Auth::check()

\Auth::user()->id

或者

auth()->check()

auth()->user()->id


暂无
暂无

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

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