程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

Auth::user() 在 Laravel 6 中返回 null

发布于2023-03-23 07:20     阅读(797)     评论(0)     点赞(17)     收藏(2)


我设置了一个自定义保护和登录控制器
登录很好但不知何故它不存储经过身份验证的用户

我读过这个“Auth::user() 在 Laravel 5.2 中返回 null”
和这个“Auth::user() 返回 null”

但我认为我的问题与中间件无关

这是代码:

控制器:

<?php

namespace App\Http\Controllers\GuruAuth;

use App\Http\Controllers\Controller;
use App\Providers\RouteServiceProvider;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;

class LoginController extends Controller
{

    use AuthenticatesUsers;

    protected $redirectTo = RouteServiceProvider::GURU_HOME;

    public function showLoginForm(Request $request)
    {
        return view('auth_guru.login');
    }

    protected function guard()
    {
        return Auth::guard('guru');
    }

    public function username()
    {
        return 'username';
    }

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

模型:

<?php

namespace App;

use Illuminate\Foundation\Auth\User as Akun;

class Guru extends Akun
{
    protected $table = 'guru';

    protected $guard = 'guru';

    protected $fillable = [
        'nip', 'nama', 'id_mapel',
        'username', 'password',
    ];

    public function mapel()
    {
        return $this->belongsTo('App\Mapel', 'id_mapel');
    }
}

配置/auth.php:

    'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'users',
        ],

        'api' => [
            'driver' => 'token',
            'provider' => 'users',
            'hash' => false,
        ],

        'admin' => [
            'driver' => 'session',
            'provider' => 'admin',
        ],

        'guru' => [
            'driver' => 'session',
            'provider' => 'guru',
        ],

        'ortu' => [
            'driver' => 'session',
            'provider' => 'ortu',
        ],
    ],

    'providers' => [
        'users' => [
            'driver' => 'eloquent',
            'model' => App\User::class,
        ],

        'admin' => [
            'driver' => 'eloquent',
            'model' => App\Admin::class,
        ],

        'guru' => [
            'driver' => 'eloquent',
            'model' => App\Guru::class,
        ],

        'ortu' => [
            'driver' => 'eloquent',
            'model' => App\Ortu::class,
        ],
    ],

路线清单:

+--------+----------+------------------------+----------------------+------------------------------------------------------------------------+-----------------+
| Domain | Method   | URI                    | Name                 | Action                                                                 | Middleware      |
+--------+----------+------------------------+----------------------+------------------------------------------------------------------------+-----------------+
|        | GET|HEAD | admin/dashboard        | admin.dashboard      | Closure                                                                | web             |
|        | GET|HEAD | admin/login            | admin.login          | App\Http\Controllers\AdminAuth\LoginController@showLoginForm           | web,guest:admin |
|        | POST     | admin/login            | admin.login.submit   | App\Http\Controllers\AdminAuth\LoginController@login                   | web,guest:admin |
|        | GET|HEAD | api/user               |                      | Closure                                                                | api,auth:api    |
|        | GET|HEAD | guru/dashboard         | guru.dashboard       | Closure                                                                | web,auth        |
|        | GET|HEAD | guru/login             | guru.login           | App\Http\Controllers\GuruAuth\LoginController@showLoginForm            | web,guest:guru  |
|        | POST     | guru/login             | guru.login.submit    | App\Http\Controllers\GuruAuth\LoginController@login                    | web,guest:guru  |
|        | GET|HEAD | home                   | home                 | App\Http\Controllers\HomeController@index                              | web,auth        |
|        | POST     | login                  |                      | App\Http\Controllers\Auth\LoginController@login                        | web,guest       |
|        | GET|HEAD | login                  | login                | App\Http\Controllers\Auth\LoginController@showLoginForm                | web,guest       |
|        | POST     | logout                 | logout               | App\Http\Controllers\Auth\LoginController@logout                       | web             |
|        | GET|HEAD | murid                  | murid.index          | App\Http\Controllers\MuridController@index                             | web             |
|        | PUT      | murid/data-diri        | murid.update         | App\Http\Controllers\MuridController@update                            | web             |
|        | GET|HEAD | murid/data-diri        | murid.edit           | App\Http\Controllers\MuridController@edit                              | web             |
|        | GET|HEAD | murid/jadwal           | jadwal.index         | App\Http\Controllers\JadwalController@index                            | web             |
|        | POST     | murid/jadwal           | jadwal.store         | App\Http\Controllers\JadwalController@store                            | web             |
|        | GET|HEAD | ortu/dashboard         | ortu.dashboard       | Closure                                                                | web             |
|        | GET|HEAD | ortu/login             | ortu.login           | App\Http\Controllers\OrtuAuth\LoginController@showLoginForm            | web,guest:ortu  |
|        | POST     | ortu/login             | ortu.login.submit    | App\Http\Controllers\OrtuAuth\LoginController@login                    | web,guest:ortu  |
|        | GET|HEAD | ortu/register          | ortu.register        | App\Http\Controllers\OrtuAuth\RegisterController@showRegisterForm      | web,guest       |
|        | POST     | ortu/register          | ortu.register.submit | App\Http\Controllers\OrtuAuth\RegisterController@register              | web,guest       |
|        | GET|HEAD | password/confirm       | password.confirm     | App\Http\Controllers\Auth\ConfirmPasswordController@showConfirmForm    | web,auth        |
|        | POST     | password/confirm       |                      | App\Http\Controllers\Auth\ConfirmPasswordController@confirm            | web,auth        |
|        | POST     | password/email         | password.email       | App\Http\Controllers\Auth\ForgotPasswordController@sendResetLinkEmail  | web             |
|        | GET|HEAD | password/reset         | password.request     | App\Http\Controllers\Auth\ForgotPasswordController@showLinkRequestForm | web             |
|        | POST     | password/reset         | password.update      | App\Http\Controllers\Auth\ResetPasswordController@reset                | web             |
|        | GET|HEAD | password/reset/{token} | password.reset       | App\Http\Controllers\Auth\ResetPasswordController@showResetForm        | web             |
|        | GET|HEAD | register               | register             | App\Http\Controllers\Auth\RegisterController@showRegistrationForm      | web,guest       |
|        | POST     | register               |                      | App\Http\Controllers\Auth\RegisterController@register                  | web,guest       |
+--------+----------+------------------------+----------------------+------------------------------------------------------------------------+-----------------+

我也试过将它添加到控制器中:

    public function authenticated(Request $request, $user)
    {
        $user = $this->guard()->user();
        Auth::setUser($user);
    }

当我尝试从视图访问 Auth::user() 时,它返回 null。

该视图直接从 route/web.php 中调用:

Route::group(['prefix' => 'guru'], function() {
    Route::get('/login', 'GuruAuth\LoginController@showLoginForm')->name('guru.login');
    Route::post('/login', 'GuruAuth\LoginController@login')->name('guru.login.submit');
    Route::get('/dashboard', function() {
        return view('guru.index');
    })->name('guru.dashboard');
});

编辑:Christophe Hubert,这是我重写函数后的截图: 实际上它和以前一样


解决方案


So, I don't know why that happens, and after finally giving up, I came up with a (not so clean) solution.
Now, instead of using multiple guards, I'm creating a relationship from the users table to the guru/admin table.

This is how I access it now Auth::user()->guru or Auth::user()->admin

I know this is not a good solution, but it's the fastest workaround I can found



所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:http://www.phpheidong.com/blog/article/520595/5475eff6df4a1e0c8f1c/

来源:php黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

17 0
收藏该文
已收藏

评论内容:(最多支持255个字符)