簡體   English   中英

Laravel 8:Url 打算不使用自定義登錄

[英]Laravel 8: Url Intended Not Working With Custom Login

在我的項目中,我希望將登錄的管理員回到以前的 url 管理員在退出管理面板時退出的登錄,我使用了在https://laravel中描述的過程.com/docs/8.x/authentication#authenticating-users但它沒有按我的意願工作,我將我的代碼粘貼到我現在使用的代碼下面。

public function login(Request $request){

        if($request->isMethod('post')){


            
            $validator = Validator::make($request->all(),[
                'email'=>'required|email',
                'password'=>'required',
            ],[
                'email.required'=>'Please enter your email address.',
                'password.required'=>'Please enter your password.',
            ]);

            
            if(!$validator->fails()){
                
                

                $credentials = $request->only('email', 'password');
                if (Auth::attempt($credentials)) {
                    $request->session()->regenerate();
                    return redirect()->intended('admin/dashboard');
                }else{
                    Session::flash('error','Invalid email or password');
                    return redirect()->back();
                }

            }else{
                return redirect()->back()->withInput()->withErrors($validator);
            }

        

        }

        if($request->isMethod('get')){

            if(!Auth::check()){
                return view('admin.admin_login');
            }else{
                return redirect('/admin/dashboard');
                
            }

        }



    }

路由文件

Route::prefix('/admin')->group(function(){

    Route::match(['get', 'post'], '/', [LoginController::class, 'login']);

    Route::group(['middleware' => ['admin','prevent-back-history']], function () {
        Route::get('/dashboard', function () { return view('admin.dashboard'); })->name('home');
        Route::get('/logout',[LoginController::class, 'logout']);
        Route::get('/roles/status/{id}',[RoleController::class, 'status']);
        Route::resource('roles', RoleController::class);
        Route::resource('users', UserController::class);
    });

});

在聊天中討論之后,您所追求的就無法完成。 目的不是讓很久以前注銷的人返回到他們之前所在的頁面。

它僅在系統發現用戶退出時將用戶返回到他們正在訪問的頁面有用。

如果他們單擊注銷然后下周返回該站點並登錄,它不會將他們重定向回該頁面。

如果您想實現這一點,我建議在他們注銷用戶表時存儲該值。

public function logout(Request $request)
    {
        $previous = url()->previous('admin/dashboard');
        
        $request->user()->previous = $previous;
        $request->user()->save();

        $this->guard()->logout();
        //Usual logout code here

然后在登錄操作中,您將檢查用戶是否在列中具有該值並重定向到它

if ($user->previous) {
    $redirect = $user->previous;
    $user->previous = null;
    $user->save();

    return redirect($redirect);
}
// Otherwise do the usual stuff

使用新遷移創建數據庫列

Schema::table('users', function() {
    $table->string('previous')->nullable()->after('password');
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM