首页 > 解决方案 > 我刚刚将我的 laravel 应用程序升级到多个身份验证守卫,我如何获取代理或管理员身份验证用户的值

问题描述

我正在为我的 laravel 应用程序使用多身份验证保护,一切似乎都运行良好....注册、登录等完美。但我需要在我的视图中获取特定警卫的经过身份验证的用户的值,但它一直说未定义的属性

这是我的模型的代码:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;


class Agent extends Authenticatable
{
    use Notifiable;

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'firstname', 'lastname', 'aid', 'city', 'state', 'email', 'password', 'bankname', 'accountnumber',
    ];

    /**
     * The attributes that should be hidden for arrays.
     *
     * @var array
     */
    protected $hidden = [
        'password', 'remember_token',
    ];
}

在我看来:

@extends('layouts.app')


@section('title')
OneNaira&copy;&nbsp;Welcome Back {{ auth()->user()->firstname }}
@endsection

@section('footer')
<!--FOOTER-->
<div class="ui stackable pink inverted secondary pointing menu" id="footer">
    <div class="ui container">
        <a class="item">© OneNaira, 2019.</a>
        <div class="right menu">
            <a class="item">
                <script>
                    var todaysDate = new Date();
                    document.write(todaysDate);
                </script>
            </a>
        </div>
    </div>
</div>
@endsection

对于登录控制器

<?php

namespace App\Http\Controllers\Agent\Auth;

use Auth;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\ThrottlesLogins;

class LoginController extends Controller
{

    /**
     * Show the login form.
     * 
     * @return \Illuminate\Http\Response
     */
    public function showLoginForm()
    {
        return view('agent.auth.login',[
            'title' => 'Welcome Back, Sign Into Your OneNaira Initiative Agent Dashboard',
            'loginRoute' => 'agent.login',
            'forgotPasswordRoute' => 'agent.password.request',
        ]);
    }


    /**
     * Login the agent.
     * 
     * @param \Illuminate\Http\Request $request
     * @return \Illuminate\Http\RedirectResponse
     */
    public function login(Request $request)
    {

        $this->validator($request);

        if(Auth::guard('agent')->attempt($request->only('aid','password'),$request->filled('remember'))){
            //Authentication passed...
            return redirect()
                ->intended(route('agent.dashboard'));
        }

        //Authentication failed...
        return $this->loginFailed();

    }


    /**
     * Logout the agent.
     * 
     * @return \Illuminate\Http\RedirectResponse
     */
    public function logout()
    {
        Auth::guard('agent')->logout();
        return redirect()
            ->route('agent.login')
            ->with('status','Agent has been logged out!');
    }


    /**
     * Validate the form data.
     * 
     * @param \Illuminate\Http\Request $request
     * @return 
     */
    private function validator(Request $request)
    {

            //validation rules.
            $rules = [
                'aid'    => 'required|exists:agents,aid|min:8|max:191',
                'password' => 'required|string|min:4|max:255',
            ];

            //custom validation error messages.
            $messages = [
                'aid.exists' => 'These credentials do not match our records.',
            ];

            //validate the request.
            $request->validate($rules,$messages);

    }


    /**
     * Redirect back after a failed login.
     * 
     * @return \Illuminate\Http\RedirectResponse
     */
    private function loginFailed()
    {
        return redirect()
        ->back()
        ->withInput()
        ->with('error','Login failed, please try again!');
    }

}

标签: laravel

解决方案


我想通了:{{ Auth::guard('agent')->user()->firstname }}


推荐阅读