Laravel 5.6 - 根据URL GET参数重定向到登录后的路由

问题描述 投票:0回答:2

我有一个标准的Laravel 5.6全新安装。

对于网络用户,我希望他们能够像往常一样在/login登录并将它们重定向到他们的用户仪表板 - 一切都很好。

然而,我正在开发Electron的东西,我想在登录后从Laravel网站上刮掉一些东西,然后我想要关闭窗口,所以,我希望有一种方法可以传递一个GET参数,如/login?app=true这将带我到另一条路线而不是仪表板。

我无法在会话中设置任何内容。我能做的最多就是在Electron中操作登录页面的DOM。

有任何想法吗?

php laravel laravel-5 laravel-5.6
2个回答
1
投票

首先,我开始通过更改use AuthenticatesUsers trait调用来使用自定义创建的调用,这是在同一名称空间中定义的 - 当然我从类的顶部删除了使用。

我有点'扩展'我想的特性,只是听一个具有特定名称的输入,以确定返回哪条路线。至于添加输入,我在加载窗口时在我的Electron应用程序中预加载了一些JS来附加输入及其值。

<?php
namespace App\Http\Controllers\Auth;

use Illuminate\Http\Request;

trait AuthenticatesUsers
{
    use \Illuminate\Foundation\Auth\AuthenticatesUsers {
        \Illuminate\Foundation\Auth\AuthenticatesUsers::login as parentLogin;
    }

    private $newRouteUrl = '/newroute';

    public function login(Request $request)
    {
        $this->validateLogin($request);

        if ($this->hasTooManyLoginAttempts($request)) {
            $this->fireLockoutEvent($request);

            return $this->sendLockoutResponse($request);
        }

        if ($this->attemptLogin($request)) {
            if ($request->input('newRouteIdentifierInput')) {
                return $this->sendNewRouteResponse($request);
            }
            return $this->sendLoginResponse($request);
        }

        $this->incrementLoginAttempts($request);

        return $this->sendFailedLoginResponse($request);
    }

    protected function sendNewRouteResponse(Request $request)
    {
        $request->session()->regenerate();

        $this->clearLoginAttempts($request);

        return $this->authenticated($request, $this->guard()->user())
            ?: redirect()->intended($this->newRouteUrl);
    }
}

1
投票

您可以在LoginController中使用authenticated()方法;

public function authenticated(Request $request, $user)
{
  if($request->get("app")==false)
     return redirect("url");

  if($request->get("app")==true)
     return redirect("another-url");

  return redirect("dashboard")
}
© www.soinside.com 2019 - 2024. All rights reserved.