亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么拉拉維爾 6 身份驗證在使用自定義防護重定向后返回 false?

為什么拉拉維爾 6 身份驗證在使用自定義防護重定向后返回 false?

PHP
慕的地8271018 2022-09-17 15:56:08
我正在嘗試使用管理員表通過拉拉維爾包進行身份驗證。在項目目錄中,我在配置/身份驗證中添加了管理員防護.php'providers' => [        'users' => [            'driver' => 'eloquent',            'model' => App\User::class,        ],        'admins' => [            'driver' => 'eloquent',            'model' => App\Admin::class,        ],        // 'users' => [        //     'driver' => 'database',        //     'table' => 'users',        // ],    ],在防護陣列中'guards' => [    'web' => [        'driver' => 'session',        'provider' => 'users',    ],    'api' => [        'driver' => 'token',        'provider' => 'users',        'hash' => false,    ],    'admin' => [        'driver' => 'session',        'provider' => 'admins',    ],    ],以下是我在帕卡格內部的登錄控制器class LoginController extends Controller{   use AuthenticatesUsers;   protected $redirectTo = '/admin/dashboard';   protected function redirectTo()   {         return '/admin/dashboard';   }   public function __construct()   {       $this->middleware('guest')->except('logout');   }   public function login(Request $request)   {          if(Auth::guard('admin')->attempt($request->only('email','password'), true)){           return redirect()               ->intended(route('dashboard'))               ->with('status','You are Logged in as Admin!');       }   }}以下是我的儀表板控制器class DashboardController extends Controller{    public function __construct()    {        /* dd(Auth::check()); */ //return false : just want to show you          $this->middleware('auth:admin');    }    public function index()    {        return view('xyz::dashboard');    }}當我嘗試登錄時,在提交有效詳細信息后,它不會將我重定向到儀表板,沒有任何反應。另外,當我嘗試強行打開/儀表板時,它會帶我進入登錄頁面。同樣在登錄嘗試之后,當我嘗試它返回true,但同樣的事情在構造函數中返回false。以同樣的方式返回用戶的信息,而返回空值。Auth::check()dashboardController.phpAuth::guard('admin')->user()dashboardController.phpphp工匠路線的奇怪結果:列表正如你在構造中看到的,我添加了DashboardController.php$this->middleware('auth:admin');因此,當我嘗試添加然后簽入終端時,它返回空值,有時返回錯誤,任何想法為什么會發生這種情況?dd(Auth::guard('admin')->user())php artisan route:list我不知道我錯過了什么,在哪里錯過了一些東西。我想請你指導我。我將不勝感激。謝謝
查看完整描述

4 回答

?
ITMISS

TA貢獻1871條經驗 獲得超8個贊

問題出在您的路由文件中:


Route::group(['namespace' => $namespace,'prefix' => 'admin',  'middleware' => ['auth']  ], function () {

    Route::get('dashboard', 'DashboardController@index')->name('dashboard');

});

您正在將默認防護與中間件一起使用。使用防護登錄后,您的默認防護可能無法登錄。這就是為什么它失敗并嘗試將您重定向到登錄頁面的原因:authadminweb


當我嘗試登錄時,在提交有效詳細信息后,它不會將我重定向到儀表板,沒有任何反應。另外,當我嘗試強行打開/儀表板時,它會帶我進入登錄頁面。


相反,您應該在組中指定您正在使用防護:admin


Route::group(['namespace' => $namespace,'prefix' => 'admin',  'middleware' => ['auth:admin']], function () {

    Route::get('dashboard', 'DashboardController@index')->name('dashboard');

});

但是,您已經在 to 中使用 指定了 ,因此無需在路由組中再次指定它。以下各項就足夠了,可降低產生錯誤的可能性:DashboardController$this->middleware('auth:admin');


Route::group(['namespace' => $namespace,'prefix' => 'admin'], function () {

    Route::get('dashboard', 'DashboardController@index')->name('dashboard');

});


查看完整回答
反對 回復 2022-09-17
?
蕭十郎

TA貢獻1815條經驗 獲得超13個贊

身份驗證:::guard(“管理員”)->嘗試($request->僅(“電子郵件”,“密碼”)其返回是真是假?如果返回 false,那么也許玩具沒有散列您的密碼 嘗試將其添加到您的模型中


 public function setPasswordAttribute($password)

    {

        $this->attributes['password'] = Hash::make($password);

    }


查看完整回答
反對 回復 2022-09-17
?
冉冉說

TA貢獻1877條經驗 獲得超1個贊

應如何定義管理模型的提取示例:


 // app/Admin.php

<?php


namespace App;


use Illuminate\Notifications\Notifiable;

use Illuminate\Foundation\Auth\User as Authenticatable;


class Admin extends Authenticatable

{

    use Notifiable;


    protected $guard = 'admin';


    protected $fillable = [

        'name', 'email', 'password',

    ];


    protected $hidden = [

        'password', 'remember_token',

    ];

}

有關多個身份驗證防護的詳細信息


查看完整回答
反對 回復 2022-09-17
?
茅侃侃

TA貢獻1842條經驗 獲得超22個贊

請注意,身份驗證::檢查不適用于構造。這是因為中間件尚未運行,因此當您嘗試簽入構造時,Auth::check() 應返回 false 或 null。


在您的登錄控制器中,為什么要使用兩個重定向?


   protected $redirectTo = '/admin/dashboard';

   protected function redirectTo()

   {

     return '/admin/dashboard';

   }

最好堅持一個:-)


在管理員.php中,添加以下內容:


protected $guard = 'admin';

對于您的網絡.php路線,請替換


Route::group(['namespace' => $namespace,'prefix' => 'admin',  'middleware' => ['auth']  ], function () {

Route::get('dashboard', 'DashboardController@index')->name('dashboard');

});


Route::group(['namespace' => $namespace,'prefix' => 'admin',  'middleware' => ['auth:admin']  ], function () {

Route::get('dashboard', 'DashboardController@index')->name('dashboard');

});

最后,在儀表板控制器中.php


替換


        /* dd(Auth::check()); */ //return false : just want to show you

跟:


    $this->middleware(function ($request, $next) {

        dd(Auth::check());  //return false : just want to show you

        die;    

    });

身份驗證::檢查() 應返回 true!


查看完整回答
反對 回復 2022-09-17
  • 4 回答
  • 0 關注
  • 172 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號