我已经全新安装了Laravel 5.6。
对于网络用户,我希望他们能够正常登录/login
,并将他们重定向到用户仪表板-一切都很好。
但是我正在用Electron开发东西,我想登录后从Laravel网站上抓取一些东西,然后我想关闭窗口,所以,我希望有一种方法可以潜在地传递GET参数例如/login?app=true
,它将带我到其他路线而不是仪表板。
我将无法在会话中设置任何内容。我所能做的就是在Electron中操纵登录页面的DOM。
有什么想法吗?
答案 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!