当前位置: 首页 > 知识库问答 >
问题:

登录laravel5后重定向到上一页。7.

秦渝
2023-03-14

我正在处理一项要求,即在记录更新/插入后发送电子邮件,其中我将页面URL作为“单击此处”文本发送,当用户单击该链接时,无论用户是否登录,他都将被重定向到该页面。

现在,如果用户已经登录,则该页面将正常打开,但如果用户未登录,则需要在登录后重定向回上一页。

我的问题在这里是我无法重定向回上一页用户试图访问之前登录通过点击这里链接从电子邮件

我已经找到了一些解决方案,但它们都不起作用。我尝试过的解决方案之一是Scott的答案,但为什么不起作用,因为我们的应用程序身份验证是完全定制的。我们的重定向验证文件代码如下

注意:我们的应用程序已经建立在Laravel上

重定向uthenticated.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);
  }
}

任何帮助都将不胜感激。谢谢

共有3个答案

岳浩宕
2023-03-14

试试这个

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,但用户未登录,则一旦用户登录,它将重定向到登录页面,然后它将自动重定向到/user/send/email页面

重定向验证

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。仪表板app2。仪表板

祁星阑
2023-03-14

我想你必须在后面的页面重定向

class RedirectIfAuthenticated
{
  public function handle($request, Closure $next, $guard = null)
  {
    $path = $request->path();
    if (Auth::guard($guard)->check()) {
        return redirect()->back();
    }
  }
}
裘丰
2023-03-14

您需要做的是获取上一个URL并进行检查,然后重定向到相关仪表板,您可以在URLFacades中使用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()theprevious()并进行检查

 类似资料:
  • 问题内容: 我正在尝试建立一个简单的网站,其登录功能与SO上的登录功能非常相似。用户应该能够以匿名用户的身份浏览网站,并且每个页面上都会有一个登录链接。当单击登录链接时,用户将被带到登录表单。成功登录后,应将用户带回到他首先单击登录链接的页面。我猜想我必须以某种方式将当前页面的url传递给处理登录表单的视图,但是我真的无法使其正常工作。 编辑:我想通了。我通过将当前页面作为GET参数传递来链接到登

  • 在Woocommerce for WordPress上,当您在产品页面上单击登录时,当您登录时,您将从您的帐户重定向到仪表板页面,而不是之前阅读的页面。 我正在尝试这样做,在登录前重定向到上一页,如果我的站点上没有上一页,则重定向到主页。 我已经试过了,但每次我都被重定向到主页。 有什么想法吗?

  • 问题内容: 我一直在寻找解决方案,但无论尝试如何,似乎都无法正确解决。 成功登录后,应该将用户重定向到他来自的页面,假设他一直在浏览帖子,并且想要登录以便可以发表评论,因此应该将他重定向到他正在浏览的帖子。所以这是我所拥有的: login.php 显示登录表单: 在 登录-check.php 检查用户名和传球被输入,的确用户存在,或者如果他已经登录,并且参数发送给login.php中: 然后将参数

  • 记录器文件中的日志- org.springframework.Security.Access.event.loggerlistener-安全授权失败,原因是:org.springframework.Security.Access.accessdeniedexception:访问被拒绝;通过身份验证的主体:org.springframework.security.authentication.ano

  • 问题内容: 我知道之前曾有人问过这个问题,但是我在这里面临一个特殊的问题。 我使用Spring Security 3.1.3。 我的Web应用程序中有3种可能的登录案例: 通过登录页面登录:确定。 通过受限页面登录:也可以。 通过非受限页面登录:不好,…每个人都可以访问“产品”页面,并且用户可以在登录后发表评论。因此,同一页面中包含一个登录表单,以允许用户进行连接。 情况3)的问题是我无法设法将用

  • 我知道这个问题以前有人问过,但我现在面临一个特殊的问题。 我使用spring security 3.1.3。 我的web应用程序中有3种可能的登录情况: 通过登录页登录:确定。 通过受限页面登录:也可以。 通过非受限页面登录:不确定...每个人都可以访问“产品”页面,如果用户已经登录,他可以发表评论。因此登录表单包含在同一页面中,以便允许用户进行连接。 案例3)的问题是,我无法将用户重定向到“产品