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

时间:2018-09-10 17:07:28

标签: php laravel laravel-5 laravel-5.6

我已经全新安装了Laravel 5.6。

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

但是我正在用Electron开发东西,我想登录后从Laravel网站上抓取一些东西,然后我想关闭窗口,所以,我希望有一种方法可以潜在地传递GET参数例如/login?app=true,它将带我到其他路线而不是仪表板。

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

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

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

我有点“扩展”了我猜到的特征,只是听了一个带有特定名称的输入,以确定返回哪条路线。至于添加输入,在加载窗口以添加输入及其值时,我在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 :(得分:1)

您可以在LoginController中使用case class ConcertReservation[A <: Option[String]](userTicket: Ticket[A], spouseTicket: Ticket[A]) (implicit ev: A =!= Option[String]) 方法;

val seated1 = Ticket(id = "id1", seat = Some("1"))
val seated2 = Ticket(id = "id2", seat = Some("2"))
val unseated1 = Ticket(id = "id3", seat = None)
val unseated2 = Ticket(id = "id4", seat = None)

ConcertReservation(seated1, seated2)     // compiles
ConcertReservation(unseated1, unseated2) // compiles
ConcertReservation(seated1, unseated1)   // does not compile
ConcertReservation[Option[String]](seated1, unseated1) // does not compile either!