[英]Redirect to previous page after login laravel5.7
我正在制定一项要求,我在发送电子邮件后发送邮件更新/插入,我将页面URL发送为“点击此处”文本,当用户点击该链接时,无论用户是否登录,他都将被重定向到该页面。
现在,如果用户已经登录,那么该页面通常会打开,但如果用户没有登录,那么我需要在登录后重定向回到上一页。
我的问题是,我无法重定向回用户尝试访问的上一页,然后通过电子邮件中的“点击此处”链接登录
我搜索了我发现的解决方案,但他们没有工作。 我尝试的解决方案之一是斯科特的答案,但是没有用,因为我们的应用程序身份验证是完全自定义的。 我们的RedirectIfAuthenticated文件代码如下
注意:我们的应用程序是基于Laravel构建的
RedirectIfAuthenticated.php
class RedirectIfAuthenticated
{
public function handle($request, Closure $next, $guard = null)
{
$path = $request->path();
if (Auth::guard($guard)->check()) {
if($path == 'app1')
{
return redirect('/app1/dashboard');
}
elseif($path == 'app2')
{
return redirect('/app2/dashboard');
}
}
return $next($request);
}
}
任何帮助,将不胜感激。 谢谢
我认为你必须在背页重定向
class RedirectIfAuthenticated
{
public function handle($request, Closure $next, $guard = null)
{
$path = $request->path();
if (Auth::guard($guard)->check()) {
return redirect()->back();
}
}
}
尝试这个
在Auth\\LoginController
重写此方法
protected function authenticated(Request $request, $user)
{
if ($request->expectsJson() || $request->ajax()) {
// return login success in json
}
return redirect()->intended($this->redirectPath());
}
例如。 如果您尝试访问/user/send/email
并且用户未登录,则一旦用户login
后它将重定向到login
页面,然后它将自动重定向到/user/send/email
页面
RedirectIfAuthenticated
class RedirectIfAuthenticated
{
public function handle($request, Closure $next, $guard = null)
{
$path = $request->path();
if ( auth()->guard($guard)->check() ) {
return redirect()->route($path.'.dashboard');
// or
// return redirect()->route($guard.'.dashboard'); //Suggest: define route based on guard
}
return $next($request);
}
}
将路线注册为app1.dashboard
和app2.dashboard
如果用户未登录,则将路径存储在会话变量中。成功登录后,检查会话值是否已设置,将用户重定向到值集,并在重定向用户之前不要忘记取消设置会话
public function handle($request, Closure $next, $guard = null)
{
$path = $request->path();
$url = "";
if($path == 'app1')
{
$url="/app1/dashboard";
}
elseif($path == 'app2')
{
$url="/app2/dashboard";
}
if (Auth::guard($guard)->check()) {
return redirect($url);
}
else{
// create session variable and store the path
// save `$url` to session variable
}
return $next($request);
}
您需要做的是获取以前的URL并检查并重定向到相关的仪表板,您可以在URL
Facades中使用URL::previous()
。 你可以做这样的事情,
use Illuminate\Support\Facades\URL;
class RedirectIfAuthenticated
{
public function handle($request, Closure $next, $guard = null)
{
$path1 = url('app1/login')
$path2 = url('app2/login')
if (Auth::guard($guard)->check()) {
if($path1 == URL::previous())
{
return redirect('/app1/dashboard');
}
elseif($path2 == URL::previous())
{
return redirect('/app2/dashboard');
}
}
return $next($request);
}
}
希望这可以帮助。 如果你只是想检查app1或app2我建议你explode()
previous()
并检查
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.