发布于2023-03-23 07:20 阅读(767) 评论(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黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 php黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-4
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!