laravel登录后重定向到上一页
laravel登录后重定向到上一页
我有一个视图(URL:/equip-planner),其表单如下:
路由:
Route::get('/equip-planner', 'EquipmentController@ep')->name('equip-planner');
Route::resource('equips', 'EquipmentController');
控制器构造函数:
public function __construct(){
$this->middleware('auth', ['except' => ['index', 'show','create','home','ep']]);
}
当我提交我的表单时,首先会检查用户是否已登录,因为资源方法“store”没有在控制器的构造函数的except列表中。所以,如果用户未登录,他将被重定向到登录页面,这是可以的。
但是:成功登录后,用户将被重定向到/equips而不是/equip-planner。我猜这是因为表单操作([...]action="{{ url('equips')}}[...])。
有人有想法如何更改重定向,以便用户将被发送回/equip-planner吗?...这是否可能?我认为还必须有另一步退回,因为步骤是:/equip-planner -> /equips -> 登录 -> 返回之前的网站,即/equips?
编辑:
我的App/Http/Middleware/RedirectIfAuthenticated.php内容:
public function handle($request, Closure $next, $guard = null)
{
if (Auth::guard($guard)->check()) {
return redirect()->intended('/home');
}
return $next($request);
}
在laravel中,有一个问题是用户在登录后无法重定向到之前的页面。这个问题的原因是没有正确设置重定向。解决方法是在登录控制器中使用Laravel的`redirect()->back()`方法来重定向到上一页。
首先,我们需要在登录控制器的`login()`方法中添加一个重定向:
public function login(Request $request) { // 验证用户登录信息 $this->validate($request, [ 'email' => 'required|email', 'password' => 'required', ]); // 尝试登录 if (Auth::attempt(['email' => $request->email, 'password' => $request->password])) { // 登录成功 return redirect()->intended('/'); // 重定向到之前的页面或者默认页面 } // 登录失败 return redirect()->back()->withInput($request->only('email')); // 重定向到上一页并保留用户输入的邮箱 }
上述代码中,`redirect()->intended('/')`方法会重定向到之前的页面,如果没有之前的页面则重定向到默认页面。`redirect()->back()`方法会重定向到上一页。
通过以上的代码调整,用户在登录后会被正确地重定向到之前的页面。
问题描述:laravel登录后如何重定向到之前的页面,并且如何传递消息。
原因:在laravel中,登录后的重定向可以使用return redirect()->back()
实现,该方法会将用户重定向到之前访问的页面。同时,如果需要在重定向后传递消息,可以使用with
方法。
解决方法:使用return redirect()->back()
可以实现登录后重定向到之前的页面。如果需要传递消息,可以使用with
方法。
示例代码:
// 登录成功后重定向到之前的页面 return redirect()->back(); // 重定向并传递消息 return redirect()->back()->with('message', '登录成功');
以上就是laravel登录后重定向到之前页面的原因和解决方法。使用return redirect()->back()
可以实现重定向,而with
方法可以用于传递消息。