![](/img/trans.png)
[英]Laravel redirect()->intended() is not working in custom login controller
[英]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.